如何在忽略NA值时,对region变量进行条件替换且保留原值?
问题原因
当Country为NA时,data$Country != "France"的判断结果是NA,而case_when会对所有未被明确匹配的情况(包括判断结果为NA的行)返回NA,导致这些行的region被覆盖成缺失值。
解决方案
修正case_when的条件逻辑,用TRUE匹配所有未被前面条件覆盖的情况(包括Country为NA的行),这样就能保留原region值:
data <- data %>% mutate(region = case_when( Country == "France" ~ "France", TRUE ~ region ))
补充说明
- 不需要用
data$引用列名,在dplyr的管道操作中,直接使用列名即可,避免环境冲突。 - 如果需要更明确地处理
NA,也可以单独添加判断,但用TRUE作为兜底条件是最简洁的写法:
data <- data %>% mutate(region = case_when( Country == "France" ~ "France", is.na(Country) ~ region, Country != "France" ~ region ))
内容的提问来源于stack exchange,提问作者daviddupont
相关产品推荐
相关产品推荐

