Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用R在另一列上保留以前的id条件?_R - Fatal编程技术网

如何使用R在另一列上保留以前的id条件?

如何使用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

我有一个表有列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    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)