替换"编码的缺失值。"在R数据帧中

时间:2012-02-19 16:51:52

标签: r replace dataframe

我有一个数据框,其缺失值由“。”编码,我想将这些值重新编码为NA:

df <- data.frame("h"=c(1,1,"."))

我尝试以下方法:

df$h[df$h == "."] <- NA

NA显示为<NA>,我无法执行mean(df$h,rm.na=TRUE)等命令

有谁知道问题是什么?当我将数字重新编码为NA时,没有问题

谢谢!

3 个答案:

答案 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)