2012-12-17 14 views
7

मैं आर में data.table उपयोग करने के लिए निम्नलिखित डेटा तालिका को संक्षेप में प्रस्तुत करने की कोशिश कर रहा हूँ:संक्षेप में प्रस्तुत करना आर में दो समूहीकरण कारकों के आधार का उपयोग कर data.table

SiteNo Var1 Var2 Var3 ... Var18 Group 
1  0.1 0.3 1   0.3  1 
2  0.3 0.1 0.9  0.2  1 
etc. 

668.944 टिप्पणियों, 43 साइटों, 3 समूह नहीं है, और 1 9 चर मैं एक फ़ंक्शन के परिणाम प्राप्त करना चाहता हूं (उदा।, mean) जो साइट और समूह दोनों द्वारा प्रत्येक कॉलम/चर को सारांशित करता है। इसलिए सारांश आंकड़ों के 43 साइट x 3 समूह x # होना चाहिए (उदा।, mean)। मैंने निम्नलिखित कोड का उपयोग किया है:

e.dt<-data.table(e) 
setkey(e.dt, Group) # set key to group number 

# get mean for each column/variable 
e.dt.mean<-e.dt[,lapply(.SD,mean), by="SiteNo"] 

उपरोक्त का उपयोग करके, मुझे 43 साइटें मिलती हैं, लेकिन 3 समूहों के बाद मैं नहीं था। मैं मूल डेटा तालिका को तीन समूहों में विभाजित कर सकता था, लेकिन यह सोच रहा था कि data.table का उपयोग करके दो चर (साइटनो और समूह) का उपयोग करके सारांशित करने का कोई तरीका था या नहीं।

मैं अभी भी data.table पर आरटीएम हूं, लेकिन अब तक मुझे उपरोक्त का जवाब नहीं मिला है।

उदाहरण से ?key के तहत:

keycols <- c("SiteNo", "Group") 
setkeyv(e.dt, keycols) 

फिर, by के रूप में उपयोग:

उत्तर

11

दोनों "समूह" और "SiteNo" की कुंजी सेट करने का प्रयास

e.dt[, lapply(.SD,mean), by = key(e.dt)] 

वैकल्पिक रूप से, आप इसका उपयोग कर सकते हैं:

e.dt[, lapply(.SD,mean), by = "SiteNo,Group"] 

या

e.dt[, lapply(.SD, mean), by = list(SiteNo, Group)] 

 संबंधित मुद्दे

  • कोई संबंधित समस्या नहीं^_^