替换用“替换”编码的缺失值&引用;在R数据帧中
我有一个数据帧,其中缺少由“.”编码的值,我想将这些值重新编码为NA:替换用“替换”编码的缺失值&引用;在R数据帧中,r,replace,dataframe,R,Replace,Dataframe,我有一个数据帧,其中缺少由“.”编码的值,我想将这些值重新编码为NA: df问题在于您的df$h列是一个因素。首先尝试将其设置为字符,然后替换“.”-值: 当然,一旦你去掉了点,你可以把它转换成一个数值变量来计算,如果你想: df$h <- as.numeric(df$h) df$h使用is.na功能。不需要转换为factor,尽管您具有字符值的事实确实导致了您想要的数值的强制 > df <- data.frame("h"=c(1,1,".")) > is.na(df)
df问题在于您的df$h列是一个因素。首先尝试将其设置为字符,然后替换“.”-值:
当然,一旦你去掉了点,你可以把它转换成一个数值变量来计算,如果你想:
df$h <- as.numeric(df$h)
df$h使用is.na
功能。不需要转换为factor,尽管您具有字符值的事实确实导致了您想要的数值的强制
> df <- data.frame("h"=c(1,1,"."))
> is.na(df) <- df=="."
> df
h
1 1
2 1
3 <NA>
>df是.na(df)df
H
1 1
2 1
3.
我不知道为什么@Tylerlinker删除了他关于使用“na.strings”的回复,因为我认为这是正确的答案
注释:一年后,我看到这一点,意识到a)OP误解了缺失值在因子或字符向量中的显示方式,b)主要问题不是重新编码R缺失值时出错,OP的代码已经正确地完成了这一点,而是@joran发现的拼写错误。是的,没错,这是一个因素。首先,按照以下语法将其转换为数字
df <- transform(df, h=as.numeric(h))
df另外,我想你的意思是na.rm=TRUE
,而不是rm.na=TRUE
。实际上,列是一个因子这一事实并没有什么区别。您仍然可以匹配等于“
”的值。正如您所指出的,真正的问题是,在计算平均值之前,您需要将其转换为数值。
> df <- data.frame("h"=c(1,1,"."))
> is.na(df) <- df=="."
> df
h
1 1
2 1
3 <NA>
df <- transform(df, h=as.numeric(h))
df$h[is.na(df$h)] <- "0" and then view the data View(df)