我有一个data.table
带有标签的有序数据,我想添加一个列,告诉我有多少记录,直到我得到一个重置倒计时的“特殊”记录。
例如:
DT = data.table(idx = c(1,3,3,4,6,7,7,8,9),
name = c("a", "a", "a", "b", "a", "a", "b", "a", "b"))
setkey(DT, idx)
#manually add the answer
DT[, countdown := c(3,2,1,0,2,1,0,1,0)]
给
> DT
idx name countdown
1: 1 a 3
2: 3 a 2
3: 3 a 1
4: 4 b 0
5: 6 a 2
6: 7 a 1
7: 7 b 0
8: 8 a 1
9: 9 b 0
看看倒计时列如何告诉我有多少行直到称为“b”的行。问题是如何在代码中创建该列。
请注意,密钥不是均匀分布的,并且可能包含重复项(因此在解决问题时不是很有用)。一般来说,非 b 名称可能不同,但如果解决方案需要,我可以添加一个只是 True/False 的虚拟列。