繁体   English   中英

R / dplyr:基于一列为组分配值

[英]R/dplyr: Assign value to a group base on one column

我有这个数据集:

test <- data.frame("eventId" = c(rep(1,5), rep(2,3), rep(3,6)), 
          "commandType" = c(rep("RO",3), rep("RW", 2), rep("RO",7),"RW", "RO"), 
          "sessionType" =  c(rep("RW",5), rep("RO",3), rep("RW",6)))

我想基于commandType为每个eventId (组)分配sessionType 如果组中出现“ RW”,则将整个组分配为“ RW”。 如果组仅将“ RO”或“ RW”作为commandType ,则sessionType将与commandType匹配。

我想这可以在dplyr完成,但不确定如何实现。 任何帮助将不胜感激! 谢谢!

诀窍是在dplyr使用group_by ...

test <- test %>% 
  group_by(eventId) %>% 
  mutate(sessionType2 = ifelse("RW" %in% commandType, "RW", commandType))

test
   eventId commandType sessionType sessionType2
     <dbl> <chr>       <chr>       <chr>       
 1       1 RO          RW          RW          
 2       1 RO          RW          RW          
 3       1 RO          RW          RW          
 4       1 RW          RW          RW          
 5       1 RW          RW          RW          
 6       2 RO          RO          RO          
 7       2 RO          RO          RO          
 8       2 RO          RO          RO          
 9       3 RO          RW          RW          
10       3 RO          RW          RW          
11       3 RO          RW          RW          
12       3 RO          RW          RW          
13       3 RW          RW          RW          
14       3 RO          RW          RW    

顺便说一句,我还必须在您的数据stringsAsFactors=FALSE代码中设置stringsAsFactors=FALSE

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM