2013-08-06 37 views
14

ile tüm sütunlar, ancak data.table yönettiği "tarafından" ile:Agrega ben aşağıdakilerden eşdeğer yapmak istiyorum 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) 

Bunu yapabileceğini biliyorum:

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

Ama düşündüğüm durum için 100 tane sütun var V1-V100 (ve her zaman yukarıdaki gibi, hepsini tek bir faktörle birleştirmek istiyorum) yukarıda mümkün değildir. ?

+8

, aşağıdaki gibidir: 'lapply DT [(.SD, toplamı) = x ile ] '. – joran

+0

@joran, .SD'nin rolünü açıklar mısınız? – POTENZA

+0

'.SD ', verilerin alt kümesini belirtir. –

cevap

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

sütun specifiy için: data.table` `de bol örnekleri arasında, referans için

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