我有一个数据框,其缺失值由“。”编码,我想将这些值重新编码为NA:
df <- data.frame("h"=c(1,1,"."))
我尝试以下方法:
df$h[df$h == "."] <- NA
但NA
显示为<NA>
,我无法执行mean(df$h,rm.na=TRUE)
等命令
有谁知道问题是什么?当我将数字重新编码为NA时,没有问题
谢谢!
答案 0 :(得分:6)
使用is.na
功能。不需要转换为因子,尽管你有字符值的事实确实会导致你想要数字的强制。
> df <- data.frame("h"=c(1,1,"."))
> is.na(df) <- df=="."
> df
h
1 1
2 1
3 <NA>
我不确定为什么@TylerRinker删除了关于使用'na.strings'的回复,因为我认为这是正确答案。
评论:一年后看到这一点,我意识到a)OP误解了当它们处于因子或特征向量时如何显示缺失值,以及b)主要问题不是重新编码为R-时的错误缺失值,OP的代码已经正确地完成了,但更确切地说是@joran识别出的错误拼写错误。
答案 1 :(得分:3)
问题是您的列df $ h是一个因素。首先尝试使其成为一个角色,然后替换“。” - 值:
df$h <- as.character(df$h)
df$h[df$h == "."] <- NA
在这里你看到了结果:
df[is.na(df$h),]
当然,一旦你摆脱了点,你可以把它转换为数字变量,如果你想要用它来计算:
df$h <- as.numeric(df$h)
答案 2 :(得分:0)
是的,是的,这是一个因素。首先通过以下语法将其转换为数字
df <- transform(df, h=as.numeric(h))
并将缺失替换为零
df$h[is.na(df$h)] <- "0" and then view the data View(df)