【发布时间】:2016-01-22 22:38:58
【问题描述】:
我正在尝试将大量 data.table 操作组合成一些更快的代码。我正在使用较小的 data.table 创建一个示例,我希望有人能提供比我开发的笨重(尴尬)代码更好的解决方案。
对于每个组,我想:
1) 验证 w 列中同时存在 TRUE 和 FALSE,如果存在:
2) 从每个中减去对应于 v 的最大值的 x 的值 x 在同一组中的值并将该数字放入新列中
所以在第 3 组中,如果最高 v 值为 10,并且在同一行中 x 为 0.212, 我会从对应于第 3 组的每个 x 值中减去 0.212,并将该数字放入新列中
3) 删除 w 列中没有 TRUE 和 FALSE 的组对应的所有行。
set.seed(1)
test <- data.table(v=1:12, w=runif(12)<0.5, x=runif(12),
y=sample(2,12,replace=TRUE), z=sample(letters[1:3],12,replace=TRUE) )
setkey(test,y,z)
test[,group:=.GRP,by=key(test)]
【问题讨论】:
-
你尝试过的“尴尬”尝试是什么?
标签: r loops row data.table subset