我有一个关于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来引用多个先前的行.有人有什么建议吗?
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)
| 归档时间: |
|
| 查看次数: |
493 次 |
| 最近记录: |