我正在尝试根据序列号来识别组。例如,我有一个数据帧,看起来像这样(简化):
UID
1
2
3
4
5
6
7
11
12
13
15
17
20
21
22我想添加一列来标识何时有连续的数字分组,例如,1到7是第一个连续的,然后它们得到1,第二个连续的集合将得到2,依此类推。
UID Group
1 1
2 1
3 1
4 1
5 1
6 1
7 1
11 2
12 2
13 2
15 3
17 4
20 5
21 5
22 5现有的代码都不能帮助我解决这个问题
发布于 2016-07-20 01:34:56
我们还可以使用data.table中的shift函数来获取当前行和前一行之间的差异,获取逻辑向量的累积和,并将其分配给创建“Group”列。这样会更快。
library(data.table)
setDT(df1)[, Group := cumsum(UID- shift(UID, fill = UID[1])>1)+1]
df1
# UID Group
# 1: 1 1
# 2: 2 1
# 3: 3 1
# 4: 4 1
# 5: 5 1
# 6: 6 1
# 7: 7 1
# 8: 11 2
# 9: 12 2
#10: 13 2
#11: 15 3
#12: 17 4
#13: 20 5
#14: 21 5
#15: 22 5https://stackoverflow.com/questions/38464551
复制相似问题