更改数据集 R 中的所有因子 NA

Change all Factor NA's in dataset R

我有一个要用于在 R studio 中构建决策树的数据集。我有很多因素是空的。我想将数据集中所有为空的因素更改为 "No Data",我有 100 多个,所以我不想一个一个地做,我宁愿能够更改所有这些一次。

数据示例(请注意,这些都是因数,我知道当它被放入 R 时它们是数字,但我不知道如何以复制的方式显示因数,因为我从.csv):

Outcome=c(1,1,1,0,0,0)
VarA=c(1,1,NA,0,0,NA)
VarB=c(0,NA,1,1,NA,0)
VarC=c(0,NA,1,1,NA,0)
VarD=c(0,1,NA,0,0,0)
VarE=c(0,NA,1,1,NA,NA)
VarF=c(NA,NA,0,1,0,0)
VarG=c(0,NA,1,1,NA,0)
df=as.data.frame(cbind(Outcome, VarA, VarB,VarC,VarD,VarE,VarF,VarG)) 

你可以试试这个:

df[is.na(df)] <- "NoData"

当我们有 factor 列并想用新值替换其中一个值时,请再次调用 factor 或将新值添加为 levels 之一在进行更改之前的因素。假设我们必须为第一列以外的变量重新编码,使用 lapply 遍历列,添加 'No Data' 作为 levels 之一,然后 replace NA 元素使用 "No Data",最后将 list 输出分配给感兴趣的列

df[-1] <- lapply(df[-1], function(x) {
        levels(x) <- c(levels(x), "No Data")
         replace(x, is.na(x), "No Data")
          })