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

时间:2018-12-13 20:20:14

标签: r dplyr

我有以下数据集:

anticaptcha

我想基于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))) 为每个sessionType(组)分配eventId。如果该组中出现“ RW”,则将整个组分配为“ RW”。如果组的commandType仅具有“ RO”或“ RW”,则commandType将与sessionType相匹配。

我认为可以在commandType中完成此操作,但不确定如何实现。任何帮助将不胜感激!谢谢!

1 个答案:

答案 0 :(得分:0)

诀窍是在group_by中使用dplyr ...

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