【发布时间】:2016-03-14 16:42:06
【问题描述】:
我正在尝试向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)]
任何想法如何做到这一点?
【问题讨论】:
标签: r data.table