Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/82.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/flash/4.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:使用dplyr根据值更改添加新变量_R_Dplyr_Mutate_Case When - Fatal编程技术网

R:使用dplyr根据值更改添加新变量

R:使用dplyr根据值更改添加新变量,r,dplyr,mutate,case-when,R,Dplyr,Mutate,Case When,我的数据集如下所示: id <- c(1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2) v1 <- c("A","A","A","A","B","B","B","B","B","A","A","A&qu

我的数据集如下所示:

id <- c(1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2)
v1 <- c("A","A","A","A","B","B","B","B","B","A","A","A","A","A","A","A","A","B","B","B","B","B","A","A","A","A")  
v2 <- c(1,1,1,2,2,2,2,2,2,2,3,3,3,1,1,1,2,2,2,2,2,2,2,3,3,3)
mydata<- data.frame(id,v1,v2)
mydata <-mydata %>% group_by(id)%>% mutate(phase= case_when(v1 == "A" & (v2 == 1 | v2==2) ~ "Going", phase == "A" & (v2 == 2 | v2==3) ~ "Returning", phase == "B" ~ "Staying"))

id在按“id”分组后,根据相邻元素是否相同(
rleid
)在“v1”上创建分组,然后在
时使用
case\u,如果“v1”值为“B”,返回“停留”,如果“v1”为“a”且“grp”为1,则返回“继续”,如果“grp”大于1,则返回”

library(data.table)
library(dplyr)
mydata %>% 
   group_by(id) %>%
   mutate(grp = rleid(v1), phase = case_when(v1 == 'B' ~ 'Staying',
        v1 == 'A' & grp == 1 ~ 'Going', v1 == 'A' &
          grp > 1 ~ 'Returning')) %>%
   ungroup %>%
   select(-grp)

按“id”分组后,根据相邻元素是否相同(
rleid
)在“v1”上创建分组,然后在
时使用
case\u,如果“v1”值为“B”,则返回“停留”,如果“v1”为“a”且“grp”为1,则返回“继续”,如果“grp”大于1,则返回”

library(data.table)
library(dplyr)
mydata %>% 
   group_by(id) %>%
   mutate(grp = rleid(v1), phase = case_when(v1 == 'B' ~ 'Staying',
        v1 == 'A' & grp == 1 ~ 'Going', v1 == 'A' &
          grp > 1 ~ 'Returning')) %>%
   ungroup %>%
   select(-grp)