在计算平均值/sd/等时,R 中有没有办法忽略我数据中的"."



我有一个很大的数据集,需要计算几个列的平均值/std-dev/min/和最大值。数据集使用"."表示主题何时缺少值。当运行mean或sd函数时,这会导致R返回NA。有简单的方法吗?

我的代码就是这个

xCAL<-mean(longdata$CAL)
sdCAL<-sd(longdata$CAL)
minCAL<-min(longdata$CAL)
maxCAL<-max(longdata$CAL)

但是R将在所有这些变量上返回NA。我得到以下错误

警告消息:平均值默认值(longdata$CAL(:参数不是数字或逻辑:返回NA

您需要将数据转换为数字才能对其进行任何计算。当您运行as.numeric时,您的.将转换为NA,这是R用于缺失值的方法。然后,您提到的所有函数都有一个参数na.rm,该参数可以设置为TRUE,以删除(rm(缺少的值(na(。

如果您的数据是factor,则需要首先将其转换为character,以避免信息丢失,如本常见问题解答中所述。

总的来说,为了安全起见,试试这个:

longdata$CAL <- as.numeric(as.character(longdata$CAL))
xCAL <- mean(longdata$CAL, na.rm = TRUE)
sdCAL <- sd(longdata$CAL, na.rm = TRUE)
# etc

请注意,na.rm是函数的一个属性——它并不是万能的魔法。如果您查看?mean?sd?min等的帮助页面,您将看到na.rm参数的文档。如果您想删除通常缺失的值,na.omit()函数可以很好地工作。

最新更新