我尝试使用mutate()
来增加列中的值,如果另一行中的值发生变化,并且如果第三行中的值发生变化,则重置为1
,如以下示例所示:
col1 col2 count
0 1 1
0 1 1
0 2 2
0 3 3
1 4 1
1 5 2
1 5 2
在row1
中更改的部分工作得很好,但在row2
中更改值的第二部分工作不起作用。我只得到以下结果:
col1 col2 count
0 1 1
0 1 2
0 2 3
0 3 4
1 4 1
1 5 2
1 5 3
这是我的工作代码:
df1 <- df %>%
group_by(col1, col2)%>%
mutate(counter=row_number())%>%
ungroup
我已经试过了:
df1 <- df %>%
group_by(col1)%>%
mutate(counter=row_number())%>%
group_by(col2)%>%
mutate(counter= 'failed_code')%>%
ungroup
但是使用像if_else
或case_when
这样的函数并不适用于我给出的参数。如何为col2
实现counter
,仅在行更改时才会增加,如果col1
更改,则重置为1
?
2条答案
按热度按时间tkqqtvp11#
使用
consecutive_id
(随dplyr >= 1.1.0
引入),您可以执行以下操作:huwehgph2#
使用
data.table
,您可以使用rleid
: