首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >mean(,na.rm=TRUE)仍然返回NA

mean(,na.rm=TRUE)仍然返回NA
EN

Stack Overflow用户
提问于 2014-08-14 07:13:42
回答 2查看 40.5K关注 0票数 8

我对R(从SPSS迁移过来)非常陌生。我在运行Mavericks的苹果电脑上使用RStudio。请用两个音节的词回答我的问题,因为这是我第一次真正尝试这样的事情。我已经完成了一些基本的教程,可以在所有的样本数据上工作。

我有一个大约有64,000行和大约20列的数据集。我想得到变量"hold_time“的平均值,但无论我如何尝试,都会得到NA或NA以及一条警告消息

我已经尝试了以下所有方法:

代码语言:javascript
复制
> summary(data_Apr_Jun$hold_time,na.rm=TRUE)
      5       6       7       4       8       2       1       3      10 
   9596    9191    3192    1346    1145     977     940     655     534 
     11       9      12       0      13      15      14      16      17 
    490     444     249     128     106      86      73      68      40 
     98     118     121     128     125      97     101     188      86 
     31      29      28      28      27      27      26      26      26 
    102     105     113      81     119     139     127     134     152 
     25      25      25      25      24      24      23      23      23 
     18      69      96     106     110     111     120     190      76 
     23      23      23      22      22      22      22      22      22 
     82     132     135     156     166      94     115     116     117 
     22      21      21      21      21      21      20      20      20 
    142     153     165      19      93     100     104     112     126 
     20      20      20      20      20      19      19      19      19 
    131     138     143     157     177     189      61      87     103 
     19      19      19      19      19      19      19      19      18 
    108     148     176     212      54      56      64      74      79 
     18      18      18      18      18      18      18      18      18 
     99     107     129     163     168     171     178     226     236 
     18      17      17      17      17      17      17      17      17 
     59      71      78      95     114     122     123     130 (Other) 
     17      17      17      17      16      16      16      16    2739 
   NA's 
  29807 
> mean(as.numeric(data_Apr_Jun$hold_time,NA.rm=TRUE))
[1] NA
> data_Apr_Jun$hold_time[data_Apr_Jun$hold_time=="NA"]<-0
> mean(as.numeric(data_Apr_Jun$hold_time))
[1] NA
> mean(data_Apr_Jun$hold_time)
[1] NA
Warning message:
In mean.default(data_Apr_Jun$hold_time) :
  argument is not numeric or logical: returning NA
> mean(as.numeric(data_Apr_Jun$hold_time,na.rm=TRUE))
[1] NA
> colMeans(data_Apr_Jun$hold_time)
Error in colMeans(data_Apr_Jun$hold_time) : 
  'x' must be an array of at least two dimensions
> colMeans(data_Apr_Jun)
Error in colMeans(data_Apr_Jun) : 'x' must be numeric
> mean(data_Apr_Jun$hold_time,na.omit)
[1] NA
Warning message:
In mean.default(data_Apr_Jun$hold_time, na.omit) :
  argument is not numeric or logical: returning NA

所以,即使我移除了NAs,它们似乎也没有被移除。我被搞糊涂了。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-08-14 07:20:06

你好,新手,不幸的是有几个错误...让我们逐一解决它们:

代码语言:javascript
复制
> mean(as.numeric(data_Apr_Jun$hold_time,NA.rm=TRUE))
[1] NA

这是因为您以错误的方式使用na.rm:它应该是

代码语言:javascript
复制
mean(as.numeric(data_Apr_Jun$hold_time),na.rm=TRUE)

  1. na.rmmean的参数,而不是as.numeric的参数(注意使用方括号)
  2. is na.rm R is区分大小写

==================================================================================

代码语言:javascript
复制
> data_Apr_Jun$hold_time[data_Apr_Jun$hold_time=="NA"]<-0

正如我在这里指出的那样,R不允许与NA进行比较:Something weird about returning NAs

你的意思是

代码语言:javascript
复制
data_Apr_Jun$hold_time[which(is.na(data_Apr_Jun$hold_time))] <- 0

还有一点需要注意的是,=="NA"正在与字符串"NA"进行比较。试试is.na("NA")is.na(NA),看看有什么不同。

==================================================================================

代码语言:javascript
复制
colMeans(data_Apr_Jun$hold_time)
Error in colMeans(data_Apr_Jun$hold_time) : 
  'x' must be an array of at least two dimensions

尝试使用data_Apr_Jun$hold_time,您将看到它返回一个向量。这就是为什么colwise平均值(由colMeans计算)没有意义。

希望通过这些提示可以理解/解决剩下的问题。你已经意识到了一件非常重要的事情:

使用R!你在正确的轨道上!

票数 18
EN

Stack Overflow用户

发布于 2017-05-30 07:58:01

不幸的是,as.numeric进行了隐式强制,这会导致错误的答案。不要在因素上暗示它。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25297705

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档