2016-02-15 98 views
0

的樣本數據平均返回NaN除了na.rm = TRUE

date  coins 
2013-10-01 NA  
2013-10-01 NA  
2013-10-01 NA  
2013-11-01 10  
2013-11-01 NA  
2013-11-01 20  
2013-11-01 30  
2013-11-01 40  
2013-12-30 NA  
2013-12-30 22  
2013-12-30 24 
2013-12-30 25 

我要做些什麼?

我想計算硬幣列的平均值和中值,忽略缺失值。

到目前爲止我做了什麼?

  1. 分組上日期變量的數據by_date <- group_by(df, date)
  2. 利用總結的數據:by_date %>% summarise_each_(funs(mean(., na.rm = TRUE), median(., na.rm=TRUE)), names(by_date)[2])

問題 通過summarise_each_返回的結果表明NaN的日期2013年10月1日 。這是否意味着該功能不會忽略缺失值?

+4

這意味着你這樣做'平均(NA,na.rm = TRUE)'你可以設置一個檢查,如果一個組的所有值都是NA,那麼使用na.rm = FALSE – rawr

+2

作爲一個附註,而不是'... summarise_each_(funs(... ),names(by_date)[2])''你可以使用'... summarise_each(funs(...),2)' –

+0

@docendodiscimus謝謝你的建議,但是當我改變參數時,你建議R響應錯誤'UseMethod中的錯誤(「as.lazy_dots」): 'as.lazy_dots'applie沒有適用的方法d到類「c('double','numeric')」' –

回答

0

這裏的問題是,2013-10-01的所有值都是NA,所以不可能有這個意思。 R是R試圖告訴你這一點。

如果你寧願只是沒有2013年10月1日在摘要中顯示,一個選擇是擺脫前期這樣NA值:

by_date<-group_by(df[!is.na(df$coins),],date)