我一直在使用ddply
從plyr包下面的代碼:相當於ddply(...,變換,...)在data.table
ddply(mtcars,.(cyl),transform,freq=length(cyl))
這樣做的data.table版本是:
DT<-data.table(mtcars)
DT[,freq:=.N,by=cyl]
當我有下面的函數時,我該如何擴展它?
現在,我想在ddply
和data.table
執行一個以上的功能:
ddply(mtcars,.(cyl),transform,freq=length(cyl),sum=sum(mpg))
DT[,list(freq=.N,sum=sum(mpg)),by=cyl]
但是,data.table
給我只有三列缸,頻率和金額。好吧,我可以這樣做:
DT[,list(freq=.N,sum=sum(mpg),mpg,disp,hp,drat,wt,qsec,vs,am,gear,carb),by=cyl]
但是,我有我讀出的數據大量的變量,我希望所有的人都在那裏爲ddply(...transform....)
。在data.table
中是否有快捷方式,就像:=
當我們只有一個功能(如上)或data.table
內的paste(names(mtcars),collapse=",")
? 注:我也有大量的功能運行。所以,我不能多次重複=:
(但是如果lapply
可以在這裏應用,我更喜歡這個)。
如果你只是想增加一列,我相信最好相當於'ddply'語法像''DT [,':='(freq = .N,sum = sum(mpg))]'' –
謝謝@藍色魔導師 – Metrics