Подставлять значения в несколько строк с одинаковым идентификатором - PullRequest
1 голос
/ 14 мая 2019

У меня есть такой фрейм данных

ID  Situation 

1      Active
1      Active
1      Other
2      Active
2      Away
2      Active
3      Away
3      Away
3      Away 

Я хочу заменить значения в столбце ситуации в следующем порядке: Другое> Активно> Вне, чтобы результирующий фрейм данных выглядел как

ID  Situation 

1      Other
1      Other
1      Other
2      Active
2      Active
2      Active
3      Away
3      Away
3      Away 

Я думаю, что сначала я должен сделать group_by, но после этого у меня возникают проблемы с выбором того, что я должен использовать

1 Ответ

0 голосов
/ 14 мая 2019

После группировки по «ID» можно было бы преобразовать «Ситуацию» в factor с levels, указанным в пользовательском порядке, а затем выбрать first level после сброса неиспользованных levels(droplevels)

library(dplyr)
df1 %>% 
    group_by(ID) %>%
    mutate(Situation = factor(Situation, levels = c("Other", "Active", "Away")),
     Situation = levels(droplevels(Situation))[1]) 
# A tibble: 9 x 2
# Groups:   ID [3]
#     ID Situation
#  <int> <chr>    
#1     1 Other    
#2     1 Other    
#3     1 Other    
#4     2 Active   
#5     2 Active   
#6     2 Active   
#7     3 Away     
#8     3 Away     
#9     3 Away     

данные

df1 <- structure(list(ID = c(1L, 1L, 1L, 2L, 2L, 2L, 3L, 3L, 3L), 
 Situation = c("Active", 
"Active", "Other", "Active", "Away", "Active", "Away", "Away", 
"Away")), class = "data.frame", row.names = c(NA, -9L))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...