如何使用R在另一列上保留以前的id条件?
我有一个表有列ID,prd,行。我想修改每个ID的行定义,只要prd与以前的记录相同,然后在下面的示例中保持行与列new_line相同如何使用R在另一列上保留以前的id条件?,r,R,我有一个表有列ID,prd,行。我想修改每个ID的行定义,只要prd与以前的记录相同,然后在下面的示例中保持行与列new_line相同 new_data使用dplyr,使用lag和cumsum的一种方法是 library(dplyr) new_data %>% group_by(ID) %>% mutate(new_line = first(line) + cumsum(prd != lag(prd, default = first(prd)))) # ID
new_data使用dplyr
,使用lag
和cumsum
的一种方法是
library(dplyr)
new_data %>%
group_by(ID) %>%
mutate(new_line = first(line) + cumsum(prd != lag(prd, default = first(prd))))
# ID prd line new_line
# <fct> <fct> <dbl> <dbl>
#1 123 a 1 1
#2 123 a 2 1
#3 123 b 3 2
#4 456 b 1 1
#5 456 a 2 2
#6 789 c 2 2
#7 789 c 3 2
#8 789 d 4 3
使用dplyr
,使用lag
和cumsum
的一种方法是
library(dplyr)
new_data %>%
group_by(ID) %>%
mutate(new_line = first(line) + cumsum(prd != lag(prd, default = first(prd))))
# ID prd line new_line
# <fct> <fct> <dbl> <dbl>
#1 123 a 1 1
#2 123 a 2 1
#3 123 b 3 2
#4 456 b 1 1
#5 456 a 2 2
#6 789 c 2 2
#7 789 c 3 2
#8 789 d 4 3
new_data %>%
group_by(ID) %>%
mutate(new_line = first(line) + data.table::rleid(prd) - 1)