我有一个像这样的数据框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
这是问题,为什么零?我已经以相同的方式计算了sum
和mean
并且它完美地工作,但是当我尝试中位数时,所有计算结果都是0或NA,即使我添加{ {1}} na.rm = TRUE
函数的结果是相同的。我真的不明白为什么会这样。
如果我对数据帧进行子集"手动" (如tapply
)并将中值函数应用于该子集,我得到正确的结果;但是,考虑到数据帧的大小,我不想这样做。
有人可以解释一下我做错了吗?