我有一个数据帧(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")