R / dplyr: присвоить значение групповой базе в одном столбце - PullRequest
0 голосов
/ 13 декабря 2018

У меня есть этот набор данных:

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 (группы) на основе commandType.Если в группе есть «RW», то вся эта группа будет присвоена «RW».Если у группы только «RO» или «RW» как commandType, sessionType будет соответствовать commandType.

Я думаю, что это можно сделать в dplyr, но не уверен, как этого добиться.Любая помощь будет принята с благодарностью!Спасибо!

1 Ответ

0 голосов
/ 13 декабря 2018

Хитрость заключается в том, чтобы использовать 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 в коде данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...