2012-12-17 71 views
7

我試圖使用data.table R中總結了以下數據表:彙總使用基於兩個分組變量R中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. 

有668944條意見,43個站點,3組,和19個變量。我想獲得一個函數的結果(例如,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使用兩個變量(SiteNo和Group)進行彙總。

我仍然是data.table上的RTM,但到目前爲止我還沒有找到上述答案。

回答

11

試試你的項設置爲兩個 「組」 和 「SiteNo」:

從例如下?key

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

然後,使用by爲:

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)]