редактировать переменные наблюдения на основе критериев, но оставить другие наблюдения без изменений, которые не соответствуют критериям редактирования в R - PullRequest
0 голосов
/ 11 января 2019

У меня есть следующий фрейм данных, который я пытаюсь изменить некоторые наблюдения ...:

lease<-c('190', '190', '190', '190', '191', '191', '191', '191')
year<-c(2016, 2017, 2016, 2018, 2016, 2017, 2016, 2018)
dive_type<-c('35m','35m', '35m','35m', '35m','35m', '35m','35m')
df=data.frame(lease, year, dive_type)

Мой код:

dfi<-df%>%
   mutate(dive_type = case_when(lease==190 & (year %in% c(2016, 2017))~ 
 'Farm dive'))

результат:

lease  year   dive_type
<fctr> <dbl>  <chr>                  
190    2016   Farm dive     
190    2017   Farm dive     
190    2016   Farm dive     
190    2018   NA        
191    2016   NA        
191    2017   NA        
191    2016   NA        
191    2018   NA

Проблема в том, что NA в dive_type, я хотел бы, чтобы они оставались неизменными по сравнению с исходным фреймом данных (то есть '35m'). Это просто пример гораздо более сложного набора данных со многими уровнями dive_type и другими переменными, поэтому было бы не удобно писать код для повторного заполнения NA. Помощь с кодом будет принята с благодарностью!

1 Ответ

0 голосов
/ 11 января 2019

Вам необходимо включить в case_when деталь TRUE, которая включала бы все случаи, когда ни одно из указанных выше условий не соответствует.

library(dplyr)

df %>%
  mutate(dive_type = case_when(lease==190 & (year %in% c(2016, 2017)) ~ 'Farm dive', 
                           TRUE ~ as.character(dive_type)))


#  lease year dive_type
#1   190 2016 Farm dive
#2   190 2017 Farm dive
#3   190 2016 Farm dive
#4   190 2018       35m
#5   191 2016       35m
#6   191 2017       35m
#7   191 2016       35m
#8   191 2018       35m
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...