将 NA 更改为 R 中的不同因子

Changing NA to a Different Factor in R

我的数据集中有一列是因子值。这是一个示例数据集:

a <- c(1,4,6,3,8)
b <- c("No","Yes","NA", "Maybe", "Yes")
df <- data.frame(a,b)

我想将第 2 列 ("b") 中的 NA 更改为 "Sometimes"。我尝试了两种不同的方法,在我看来,它们应该有效,但似乎没有给我正确的输出:

df[is.na(df$b)] <- "Sometimes"
df[df$b == "NA"] <- "Sometimes"

有办法吗?

如果您使用的是"NA"(即字符串),那么下面会将其更改为不同的因子"Sometimes"

> df <- data.frame(a,b)
> levels(df$b)
[1] "Maybe" "NA"    "No"    "Yes"
> levels(df$b)[levels(df$b)=="NA"]
[1] "NA"
> levels(df$b)[levels(df$b)=="NA"]<-"Sometimes"
> df$b
[1] No        Yes       Sometimes Maybe     Yes  
Levels: Maybe Sometimes No Yes
> df
  a         b
1 1        No
2 4       Yes
3 6 Sometimes
4 3     Maybe
5 8       Yes

否则,如果您使用 NA,这将添加 Sometimes 作为新因素并使用 is.na 更改它:

b <- c("No","Yes",NA, "Maybe", "Yes")
df<-data.frame(a,b)
levels(df$b)<-c(levels(df$b),"Sometimes") # introduce a new factor
df[is.na(df$b),"b"]<-"Sometimes"

> df
  a         b
1 1        No
2 4       Yes
3 6 Sometimes
4 3     Maybe
5 8       Yes