我有一个名为df的 Dataframe (如下面的dput
所示):
value
1 -4
2 -3
3 -2
4 -1
5 0
6 1
7 2
8 3
9 -3
10 -2
11 -1
12 0
13 1
14 2
15 3
16 -3
17 -2
18 -1
19 0
20 1
21 2
22 -2
23 -1
24 0
25 1
26 2
27 3
28 4
我想根据正值变为负值的时间对序列列“value”进行分组,当正值变为负值时,它就是一个组。因此,第8行的值为3,第9行的值为-3,这意味着正值变为负值,因此第8行之前的所有行都是一个组。第15行和第16行也会发生移位,依此类推。下面是所需的输出:
value group
1 -4 1
2 -3 1
3 -2 1
4 -1 1
5 0 1
6 1 1
7 2 1
8 3 1
9 -3 2
10 -2 2
11 -1 2
12 0 2
13 1 2
14 2 2
15 3 2
16 -3 3
17 -2 3
18 -1 3
19 0 3
20 1 3
21 2 3
22 -2 4
23 -1 4
24 0 4
25 1 4
26 2 4
27 3 4
28 4 4
所以我想知道有没有人知道如何根据正值到负值的变化对这个序列进行分组?
df的dput
:
df <- structure(list(value = c(-4, -3, -2, -1, 0, 1, 2, 3, -3, -2,
-1, 0, 1, 2, 3, -3, -2, -1, 0, 1, 2, -2, -1, 0, 1, 2, 3, 4)), class = "data.frame", row.names = c(NA,
-28L))
1条答案
按热度按时间njthzxwz1#
编辑:更新答案以稳定输出。
我觉得你可以用
这将返回
我使用
group_by
进行分组,如果您只需要一个新列,请将其替换为mutate
。