如何根据 R 中的条件用字符串替换 NA?

How to replace NA with a string based on a condition in R?

我有以下数据:

name <- c(NA, NA)
code <- c("KSV", "KSV")
testing_data <- cbind.data.frame(name, code) 

对于所有代码 ==“KSV”,我想用“Kosovo”替换 NA。任何帮助将不胜感激。

您可以使用以下代码:

library(dplyr)

testing_data %>%
  mutate(name = ifelse(is.na(name) & code == "KSV", "Kosovo", name))

    name code
1 Kosovo  KSV
2 Kosovo  KSV

或者作为 case_when 的替代:

testing_data %>%
  mutate(name = case_when(
    is.na(name) & code == "KSV" ~ "Kosovo",
    TRUE ~ as.character(name)
  ))

使用 replace

的基本 R 选项
transform(
  testing_data,
  name = replace(name,code == "KSV" & is.na(name),"Kosovo")
)

ifelse

transform(
  testing_data,
  name = ifelse(code == "KSV" & is.na(name), "Kosovo",name)
)

给予

    name code
1 Kosovo  KSV
2 Kosovo  KSV

您可以使用 ifelse()replace_na()

library(tidyr)
library(dplyr)

testing_data %>% mutate(name=ifelse(code=='KSV', replace_na(name, 'Kosovo'), name))

带有case_when()的稍微简单的版本:

testing_data %>% mutate(name=case_when(code=='KSV' ~replace_na(name, 'Kosovo')))