带data.table的一个组的子集假设我有一个包含一些棒球运动员的数据表:library(plyr)library(data.table)bdt <- as.data.table(baseball)对于每个玩家(由id给出),我希望找到与他们玩游戏最多的年份相对应的行。这在plyr中很简单:ddply(baseball, "id", subset, g == max(g))data.table的等效代码是什么?我试过:setkey(bdt, "id") bdt[g == max(g)] # only one rowbdt[g == max(g), by = id]
# Error: 'by' or 'keyby' is supplied but not jbdt[, .SD[g == max(g)]] # only one row这样做是可行的:bdt[, .SD[g == max(g)], by = id]但它只比plyr快30%,说明它可能不是惯用的。
1 回答
素胚勾勒不出你
TA贡献1827条经验 获得超9个赞
data.table
bdt[bdt[, .I[g == max(g)], by = id]$V1]
.SD
编辑:.SD
[.data.table
by
- 1 回答
- 0 关注
- 413 浏览
添加回答
举报
0/150
提交
取消