2016-04-13 34 views
-1

有許多變數data.table讓我有一些data.tabledt總結可變

pga fgm fga tgp mode 
1: 0.2 0.1 0.9 7.3  1 
2: 1.3 7.5 8.3 8.3  3 
3: 2.0 7.7 6.3 7.7  2 
4: 7.3 3.6 7.0 6.6  1 
5: 6.7 0.3 8.3 0.6  2 
6: 5.0 3.7 -1.1 -3.2  1 
.... 

我需要計算mean通過可變模式分組每個變量,並得到data.table如下:

mode pga fgm fga tgp 
1:  1 0.23 0.11 10.9 7.23 
2:  2 1.32 73.5 85.3 8.33 
3:  3 2.06 7.75 6.33 7.47 
4:  4 6.32 32.6 7.01 6.16 
.... 

有一個班輪來執行任務:

​​

沒關係,如果只有4個變量。但是,在現實世界中,變量的數量是〜1000。如何修改實際任務的腳本?

+2

'DT [,lapply(.SD,平均值),通過=模式]'是運行在所有數據表中的列的函數的標準方式。雖然我不知道爲什麼你有'sum()'的第一列。這絕對是重複的。 –

+0

@ HaddE.Nuff - 謝謝。我修正了錯字 – Loom

+1

Bonus trick:使用'.SDcols'來彙總很多但不是全部的列,例如'some_cols <-c(「pga」,「fgm」,「fga」,「tgp」); dt [,lapply(.SD,mean),by = mode,.SDcols = some_cols]' – MichaelChirico

回答

0

dplyr

library(dplyr) 
dt %>% 
    group_by(mode) %>% 
    summarise_each(funs(mean))