我想将很多data.table操作组合成一些更快的代码。我用一个较小的data.table创建了一个例子,我希望有人比我开发的笨重(令人尴尬的)代码有更好的解决方案。复杂的data.table子集和操作
对于每个组,我想:
1)确认存在既是TRUE和在柱瓦特FALSE,并且如果存在:
2)减去x的对应于最高值V值来自同一组中的x的每个 并且将该数字放在新列中
因此,在组3中,如果最高v值是10,并且在同一行x中是0.212, I将从对应于组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)]
什么是“尴尬”尝试你试过? –