r - Why does data.table group differently depending on whether I pass it the variable name directly or not? -


अगर मैं variable bloodpressure को data.table पर पास करता हूँ, तो सब कुछ ठीक काम करता है।

  tdt & lt; - data.table (bloodpressure = rnorm (1000, माध्य = 100, sd = 15), पुरुष = प्रतिनिधि (c (0,1))) strata.var & lt; - with (tdt , (सी ('पुरुष')) प्राप्त करें), टीडीटी [, सूची (वर्नाम = 'रक्तप्रभाव', एन =।, मतलब = मतलब (रक्तप्रदर्शन, एनएआरआर = सच), एसडी = एसडी (रक्तप्रदर्शन, ना। आरएम = TRUE)), = = (strata.var)]   

मुझे यह परिणाम मिलता है

  strata.var varname N मतलब sd 1: 0 रक्तचाप 500 100.2821 15.13686 2: 1 रक्त प्रदूषण 500 100.0392 15.02566   

समूह के साधन से मेल खाता है

  & gt; मतलब (टीडीटी $ रक्तप्रवाह [tdt $ male == 0]) [1] 100.2821 & gt; मतलब (टीडीटी $ रक्तप्रवाह [टीडीटी $ पुरुष == 1]) [1] 100.0392   

लेकिन अगर मैं इस प्रोग्राम को करने की कोशिश कर रहा हूं, और चर एक अन्य चर ( वर )

  var_as_string & lt; - 'bloodpressure' var & lt; - साथ (tdt, मिल (var_as_string)) tdt [, सूची (VARNAME = 'bloodpressure', एन = ।, मतलब = मतलब (var, na.rm = TRUE), एसडी = एसडी (रक्तप्रदर्शन, ना। आरएम = सच)), = (strata.var) द्वारा   

I एक अलग परिणाम प्राप्त

  strata.var VARNAME एन 1 एसडी मतलब है:। 0 bloodpressure 500 100.1606 १५.१३६८६ 2: 1 bloodpressure 500 100.1606 १५.०२,५६६   

सूचना अब < कोड> मतलब समान है (अर्थात समूह द्वारा नहीं पूरे नमूना पर गणना की जाती है।

  & gt; मतलब (टीडीटी $ रक्तपेशर) [1] 100.1606    

आप mean = mean (var, na.rm = TRUE) को बदल सकते हैं, के साथ < Code> mean = mean (get (var_as_string), na.rm = TRUE) और फिर यह काम करना चाहिए - अन्यथा यह केवल संख्यात्मक वेक्टर का उपयोग v में करता है डेटा तालिका स्तंभ की बजाय आप इसे उपयोग करना चाहते हैं (और दोनों उपसमूहों के लिए माध्य (var) देता है) के बजाय एआर

  पुस्तकालय (data.table ) Set.seed (1) टीडीटी & lt; - data.table (bloodpressure = rnorm (1000, माध्य = 100, sd = 15), पुरुष = प्रतिनिधि (c (0,1))) strata.var & lt; - with ( tdt, (ग ( 'पुरुष'))) tdt [, सूची प्राप्त (VARNAME = 'bloodpressure', एन = .N, मतलब = मतलब (bloodpressure, na.rm = TRUE), एसडी = एसडी (bloodpressure, na.rm = TRUE)), = द्वारा (strata.var)] # strata.var VARNAME एन मतलब एसडी # 1: 0 bloodpressure 500 ९९.५८४२५ १५.५५,७३५ # 2: 1 bloodpressure 500 १००.०६,६३० १५.५०,१८८ var_as_string & lt; - 'bloodpressure' tdt [, सूची (VARNAME = 'bloodpressure', एन = .N, मतलब = मतलब (var_as_string मिल (), na.rm = TRUE), एसडी = एसडी (bloodpressure, na.rm = TRUE)), = द्वारा (strata.var)] # तबके .var varname एन मतलब sd # 1: 0 रक्तचाप 500 99.58425 15.55735 # 2: 1 रक्त दबाव 500 100.06630 15.50188    

Comments

Popular posts from this blog

java - ImportError: No module named py4j.java_gateway -

python - Receiving "KeyError" after decoding json result from url -

.net - Creating a new Queue Manager and Queue in Websphere MQ (using C#) -