2013-08-06 26 views
14

mi piacerebbe fare l'equivalente di quanto segue, ma con del data.table "con":aggregato tutte le colonne con 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) 

So che avrei potuto fare questo:

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

Ma per il caso sto considerando che ho circa 100 colonne V1-V100 (e voglio sempre aggregarle tutte con un singolo fattore, come in aggregato sopra) quindi la soluzione data.table che ho sopra non è fattibile.

+8

Per riferimento, tra gli esempi copiose 'data.table' è il seguente:' DT [, lapply (.SD, sum), da = x ] '. – joran

+0

@joran, potresti spiegare il ruolo di .SD? – POTENZA

+0

'.SD' si riferisce al sottoinsieme di dati. –

risposta

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

essere indicate colonne:?

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