簡體   English   中英

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

[英]mean( ,na.rm=TRUE) still returns NA

我是R的新手(從SPSS轉移)。 我在運行Mavericks的Mac上使用RStudio。 請用2個音節的單詞回答我的問題,因為這是我第一次真正嘗試這樣的事情。 我已經完成了一些基礎教程,可以使所有樣本數據都能正常工作。

我有一個64,000行和大約20列的數據集。 我想獲得變量“hold_time”的平均值,但無論我嘗試什么,我都會獲得NA或NA以及警告消息

我嘗試了以下所有方法:

> 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

因此,即使我刪除了NA,它們似乎也沒有被刪除。 我很沮喪。

你好Rnovice不幸有幾個錯誤......讓我們一個一個地解決它們:

> mean(as.numeric(data_Apr_Jun$hold_time,NA.rm=TRUE))
[1] NA

這是因為你以錯誤的方式使用na.rm :它應該是

mean(as.numeric(data_Apr_Jun$hold_time),na.rm=TRUE)
  1. na.rm是一個mean的參數,而不是as.numeric (帶括號的注意事項)
  2. na.rm R區分大小寫

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

> data_Apr_Jun$hold_time[data_Apr_Jun$hold_time=="NA"]<-0

R不允許與NA進行比較,因為我在這里指出: 返回NAs有點奇怪
你的意思是

data_Apr_Jun$hold_time[which(is.na(data_Apr_Jun$hold_time))] <- 0

還有一個評論=="NA"與字符串"NA"進行比較。 嘗試is.na("NA")is.na(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

嘗試data_Apr_Jun$hold_time ,你會看到它返回一個向量。 這就是為什么一個colwise mean(由colMeans計算)沒有意義的原因。

希望通過這些提示可以理解/解決其余問題。 你已經意識到的一個非常重要的事情:
用R! 你走在正確的軌道上!

不幸的是, as.numeric會產生一種隱含的強制,導致錯誤的答案。 不要暗示它是因素。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM