如何引用R data.table中的多个先前行

Tha*_*ang 5 r data.table

我有一个关于data.table的问题R 我有这样的数据集

data <- data.table(a=c(1:7,12,32,13),b=c(1,5,6,7,8,3,2,5,1,4))

     a b
 1:  1 1
 2:  2 5
 3:  3 6
 4:  4 7
 5:  5 8
 6:  6 3
 7:  7 2
 8: 12 5
 9: 32 1
 10: 13 4
Run Code Online (Sandbox Code Playgroud)

现在我想生成第三列c,它将a的每一行的值与b的所有先前值进行比较,并检查b的值是否大于a.例如,在第5行,a = 5,并且b的先前值是1,5,6,7.因此6和7大于5,因此c的值应该是1,否则它将是0.结果应该是这样的

     a b  c
 1:  1 1 NA
 2:  2 5  0
 3:  3 6  1
 4:  4 7  1
 5:  5 8  1
 6:  6 3  1
 7:  7 2  1
 8: 12 5  0
 9: 32 1  0
10: 13 4  0
Run Code Online (Sandbox Code Playgroud)

我尝试使用for循环,但需要很长时间.我也尝试过shift但是我不能用shift来引用多个先前的行.有人有什么建议吗?

Dea*_*gor 6

library(data.table)
data <- data.table(a=c(1:7,12,32,13),b=c(1,5,6,7,8,3,2,5,1,4))
data[,c:= a <= shift(cummax(b))]
Run Code Online (Sandbox Code Playgroud)

  • 这更像是OP的一点 - 你真的想要一个明显是逻辑对象的东西存储为整数吗?我理解想要整数的本能,但如果你问我,那些逻辑性的列应该存储为`logical` (2认同)