与tapply()

时间:2015-11-06 01:04:21

标签: r median tapply

我有一个像这样的数据框D

Number         Date Number2
     0   2015-11-01    1123
     4   2015-11-01    1175
    50   2015-11-01    1139
   122   2015-11-02    1105
    45   2015-11-02    1143
    99   2015-11-02    1123

当然,它有更多的观察(大约17000),有些是NA。列Date是一个因素。我想按天计算列Number 的中位数(使用列Date),为此我使用tapply函数,如下所示:

tapply(D$Number, D$Date, median)

输出如下内容:

2012-10-01 2012-10-02 2012-10-03 2012-10-04 2012-10-05 2012-10-06 
        NA          0          0          0          0          0        
2012-10-12 2012-10-13 2012-10-14 2012-10-15 2012-10-16 2012-10-17 
         0          0          0          0          0          0
2012-10-23 2012-10-24 2012-10-25 2012-10-26 2012-10-27 2012-10-28
         0          0          0          0          0         NA

这是问题,为什么零?我已经以相同的方式计算了summean并且它完美地工作,但是当我尝试中位数时,所有计算结果都是0或NA,即使我添加{ {1}} na.rm = TRUE函数的结果是相同的。我真的不明白为什么会这样。

如果我对数据帧进行子集"手动" (如tapply)并将中值函数应用于该子集,我得到正确的结果;但是,考虑到数据帧的大小,我不想这样做。

有人可以解释一下我做错了吗?

0 个答案:

没有答案