【发布时间】:2016-05-10 08:46:07
【问题描述】:
我的数据集中有一列是因子值。这是一个示例数据集:
a <- c(1,4,6,3,8)
b <- c("No","Yes","NA", "Maybe", "Yes")
df <- data.frame(a,b)
我想将第 2 列(“b”)中的 NA 更改为“有时”。我尝试了两种不同的方法,在我看来,它们应该可以工作,但似乎没有给我正确的输出:
df[is.na(df$b)] <- "Sometimes"
df[df$b == "NA"] <- "Sometimes"
有没有办法做到这一点?
【问题讨论】:
-
"NA"不是真正的NA,应该只是NA -
df$b[df$b == "NA"] <- "Sometimes" -
除了大卫所说的,请看这个问题的答案:how to change name of factor levels
-
由于默认设置
stringsAsFactors=TRUE,@jogo 的建议只有在设置df$b <- as.character(df$b)后才有效。是的,它不是“真正的”NA,那只是两个字母;因此它不会被is.na()识别。 -
<NA>形式是典型的缺失级别。那个是“真实的”,可以通过which(is.na(df$b))进行检查。