我正在尝试添加新列data.table
,其中行中的值取决于行中值的相对关系。更准确地说,如果一行中有一个值 X,我想知道同一列(和组)中有多少个其他值在 X-30 范围内。
也就是说,考虑到:
DT<-data.table(
X = c(1, 2, 2, 1, 1, 2, 1, 2, 2, 1, 1, 1),
Y = c(100, 101, 133, 134, 150, 156, 190, 200, 201, 230, 233, 234),
Z = c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12))
我想要一个新的列,其值:
N <- c(0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 1, 2)
我尝试了以下方法,但没有得到可以使用的结果:
DT[,list(Y,num=cumsum(Y[-.I]>DT[.I,Y]-30),Z),by=.(X)]
有什么想法如何做到这一点?