我尝试使用R 3.1.2中的“均值”功能搜索我得到的错误。'
目的:计算数据集的平均值
使用的函数:sapply,summary来计算均值,如下所示:
sapply(data,mean,na.rm=TRUE)
summary(data)
面临的问题:现在,我正在尝试使用“均值”函数来计算完整数据集的均值。我使用了这样的函数:
> testingnew <-data[complete.cases(data),]
> mean(testingnew)
弹出警告:
[1] NA
Warning message:
In mean.default(testingnew) :
argument is not numeric or logical: returning NA
Que:有人可以告诉我为什么会出现此警告,我尝试使用complete.cases删除NA(缺失值)。
答案 0 :(得分:0)
#To Eliminate missing values: # ! = is not
testingnew <- subset(data, !(is.na(data)))
#Choose a column to calculate the mean:
#Make sure it is numeric or integer
class(testingnew$Col1)
mean(testingnew$Col1, na.rm=TRUE)
答案 1 :(得分:0)
也许您可以尝试使用自己的数据集重现此工作流程...似乎唯一缺少的是指具有平均功能的单个列,或者像以前一样使用sapply。
使用随机值创建数据框
my.df <- data.frame(x1 = rnorm(n = 200), x2 = rnorm(n=200))
随机将NA传播到df
is.na(my.df) <- matrix(sample(c(TRUE,FALSE), replace= TRUE, size = 400,
prob=c(0.10, 0.90)),
ncol = 2)
为了获得不使用完整案例的手段:
mean(my.df$x1, na.rm=TRUE) # mean(my.df[,1], na.rm=TRUE) is equivalent
mean(my.df$x2, na.rm=TRUE) # mean(my.df[,2], na.rm=TRUE) is equivalent
完整案例方法(如果这是你真正需要的):
my.df.complete <- my.df[complete.cases(my.df),]
获取两列的方法
sapply(X = my.df.complete, FUN = mean)
从各个列中获取均值
mean(my.df.complete$x1)
mean(my.df.complete$x2)
答案 2 :(得分:0)
创建子集有帮助:
data3 <-subset(data, !is.na(Ozone))
mean(data3$Ozone)