我有以下数据框,我正在尝试更改一些观察结果...
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
问题是dive_type中的NA,我希望它们与原始数据帧(即'35m')保持不变。这只是一个更复杂的数据集的示例,该数据集具有许多级别的dive_type和其他变量,因此编写代码以重新填充NA并不方便。代码的帮助将不胜感激!
答案 0 :(得分:1)
您需要在TRUE
中包括case_when
部分,其中应包括上述条件都不匹配的所有情况。
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