如何根据 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')))
我有以下数据:
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
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')))