替换loop-R的数据帧替代方式中缺少的因子值

  • 本文关键字:loop-R 数据帧 替换 方式中 r
  • 更新时间 :
  • 英文 :


我有一个数据帧(df),其中有一个数字列和两个因子列,如下所示:

df<-data.frame(x=as.numeric(1:5),
              y=as.factor(c("a","a","b",NA,"b")),
              z=as.factor(c("m",NA,"n","m","m")))

我想用0替换缺少的值(NA)。以下代码运行良好:

for(i in 2:ncol(df)){
  levels(df[[i]])<-c(levels(df[[i]]),0)
  df[[i]][is.na(df[[i]])]<-0
}

然而,我想知道,有没有其他方法可以使用应用程序、繁琐的程序?如果有任何帮助,我将非常高兴。非常感谢。

使用lapply

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

如果我们使用car 中的recode

library(car)
df[-1] <- lapply(df[-1], recode, "NA=0")

最新更新