data.table
何人かの野球選手を含むがあるとします:
library(plyr)
library(data.table)
bdt <- as.data.table(baseball)
各グループ (プレーヤー 'id' で指定) について、ゲームの最大数 'g' に対応する行を選択したいと考えています。これは簡単ですplyr
:
ddply(baseball, "id", subset, g == max(g))
に相当するコードはdata.table
何ですか?
私は試した:
setkey(bdt, "id")
bdt[g == max(g)] # only one row
bdt[g == max(g), by = id] # Error: 'by' or 'keyby' is supplied but not j
bdt[, .SD[g == max(g)]] # only one row
これは機能します:
bdt[, .SD[g == max(g)], by = id]
しかし、それは よりも 30% 速いだけでありplyr
、おそらく慣用的ではないことを示唆しています。