6

ddply私はplyrパッケージを使用して次のコードを持っています:

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.tablecyl、freq、および sum の 3 つの列しか表示されません。さて、私はこのようにすることができます:

DT[,list(freq=.N,sum=sum(mpg),mpg,disp,hp,drat,wt,qsec,vs,am,gear,carb),by=cyl]

しかし、読み取りデータに多数の変数があり、ddply(...transform....). (上記のように)関数が1つしかない場合や、内にこのようなものがある場合とdata.table同じように、ショートカットはありますか?注: 実行する関数も多数あります。したがって、何度も繰り返すことはできません(ただし、ここで適用できる場合はこれを希望します)。:=paste(names(mtcars),collapse=",")data.table=:lapply

4

2 に答える 2

10

このように逆引用符を使用:=します...

DT[ , `:=`( freq = .N , sum = sum(mpg) ) , by=cyl ]
head( DT , 3 )
#    mpg cyl disp  hp drat    wt  qsec vs am gear carb freq   sum
#1: 21.0   6  160 110 3.90 2.620 16.46  0  1    4    4    7 138.2
#2: 21.0   6  160 110 3.90 2.875 17.02  0  1    4    4    7 138.2
#3: 22.8   4  108  93 3.85 2.320 18.61  1  1    4    1   11 293.3
于 2013-10-24T15:12:50.220 に答える