除了na.rm = TRUE之外,均值返回NaN

时间:2016-02-15 15:11:34

标签: r dplyr

示例数据

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. 上的数据分组
  3. 使用以下内容汇总数据:by_date %>% summarise_each_(funs(mean(., na.rm = TRUE), median(., na.rm=TRUE)), names(by_date)[2])
  4. 问题 summarise_each_返回的结果显示 NaN 的日期 2013-10-01 。这是否意味着该功能不会忽略缺失的值?

1 个答案:

答案 0 :(得分:3)

这里的问题是2013-10-01的所有值都是NA,所以没有平均值。 NaN是R试图告诉你这件事。

如果您不想在摘要中显示2013-10-01,那么可以选择在此前预先删除NA值:

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