2013-08-06 13 views
14

साथ सभी स्तंभों मैं निम्नलिखित के बराबर करना चाहते हैं, लेकिन साथ data.table के "द्वारा":सकल data.table

dt <- data.table(V1 = rnorm(100), V2 = rnorm(100), V3 = rnorm(100), 
    group = rbinom(100,2,.5)) 
dt.agg <- aggregate(dt, by=list(dt$group), FUN=mean) 

मैं जानता हूँ कि मैं यह कर सकता है कि:

dt.agg <- dt[, list(V1=mean(V1), V2=mean(V2), V3=mean(V3)), by=group] 

लेकिन मैं मैं 100 या तो कॉलम V1-V100 है (और मैं हमेशा की तरह, एक भी पहलू से उन सभी को एकत्र करने के लिए ऊपर कुल में के रूप में चाहते हैं) तो data.table समाधान मुझे मिल गया है पर विचार कर रहा हूँ मामले के लिए इसके बाद के संस्करण संभव नहीं है। ?

+8

संदर्भ के लिए, निम्न है ] '। – joran

+0

@joran, आप .SD की भूमिका के बारे में समझाएं सकता है? – POTENZA

+0

'.SD' डेटा के सबसेट को दर्शाता है। –

उत्तर

32
dt[, lapply(.SD, mean), by=group] 

कॉलम specifiy करने के लिए:, डीटी [, lapply (.SD, योग) `द्वारा = एक्स:` data.table` में प्रचुर उदाहरण के बीच

dt[,...,by=group, .SDcols=c("V1", "V2", "V3", ...)] 
dt[,...,by=group, .SDcols=names(dt)[1:100]]