2016-02-15 65 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)