R中的平均函数用于csv文件中的数据

时间:2015-03-10 03:21:17

标签: r mean summary sapply

我尝试使用R 3.1.2中的“均值”功能搜索我得到的错误。'

目的:计算数据集的平均值
使用的函数:sapply,summary来计算均值,如下所示:

  1. sapply(data,mean,na.rm=TRUE)
  2. summary(data)
  3. 面临的问题:现在,我正在尝试使用“均值”函数来计算完整数据集的均值。我使用了这样的函数:

    > 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(缺失值)。

3 个答案:

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