[英]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.