如果我的数据框中有一列单调递增的值,例如:
x
1
2
3
4
1
2
3
1
2
3
4
5
6
1
2
如何添加列以对导致的每个递增序列进行分组:
x y
1 1
2 1
3 1
4 1
1 2
2 2
3 2
1 3
2 3
3 3
4 3
5 3
6 3
1 4
2 4
我只能想到使用一个缓慢的循环。
答案 0 :(得分:3)
您可以选择cumsum
功能来执行此操作。
> x <- c(1,2,3,4,1,2,3,1,2,4,5,1,2)
> cumsum(x==1)
[1] 1 1 1 1 2 2 2 3 3 3 3 4 4
答案 1 :(得分:3)
我会使用diff
并计算累积总和:
df$y <- c(1, cumsum(diff(df$x) < 0 ) + 1)
> df
x y
1 1 1
2 2 1
3 3 1
4 4 1
5 1 2
6 2 2
7 3 2
8 1 3
9 2 3
10 3 3
11 4 3
12 5 3
13 6 3
14 1 4
15 2 4