我有一个带有字符变量ID的数据框。它具有9位数字和3个其他值:空白,N / A和NA。我想用999999999替换空白,N / A和NA。
我试过用这个:
df$id <- gsub('','999999999', df$id)
但它取代了所有空白(即使是有效的ID)。这样做的最佳方式是什么?
id <- c("", "N/A", "123456789", "NA","123456789")
> dummydata <- data.frame(id)
答案 0 :(得分:1)
考虑这个可重复的例子:
set.seed(100)
dt <- data.frame(id = sample(rep(c(1:10, c(NA, "N/A", " ", "")), 2)))
replace_value <- 999999999
dt$orig <- dt$id
dt$id <- gsub(" ", replace_value, dt$id)
dt$id <- gsub("N/A", replace_value, dt$id)
dt$id[is.na(dt$id)] <- replace_value
dt$id[nchar(dt$id) == 0] <- replace_value
id orig 1 2 2 2 8 8 3 999999999 4 10 10 5 9 9 6 8 8 7 999999999 8 5 5 9 4 4 10 999999999 N/A 11 4 4 12 3 3 13 6 6 14 999999999 N/A 15 999999999 <NA> 16 999999999 17 999999999 18 9 9 19 7 7 20 10 10 21 2 2 22 3 3 23 999999999 <NA> 24 1 1 25 5 5 26 6 6 27 1 1 28 7 7