我有一个很大的数据集,需要计算几个列的平均值/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()
函数可以很好地工作。