我想从我的数据集中提取一个或多或少在中间的实际日期。如果我有一定数量的测量值,median()
可以正常工作。但是,如果存在偶数个测量值,则平均中间两个,这会产生一个不在我的数据集中的日期。
对于以下示例:
mydates <- as.Date(c("2016-02-18", "2016-03-30", "2016-05-31", "2016-08-19"))
median(mydates)
...我该怎么办才能让R返回“2016-03-30”或“2016-05-31”,而不是“2016-4-30”,这不在我的原始数据中组?
只要它是一致的,我不在乎它是早期还是后期。
答案 0 :(得分:5)
Use the quantile
function and specify the type
as 1, 3 or 4.
> quantile(mydates, p = 0.5, type = 1)
50%
"2016-03-30"
> quantile(mydates, p = 0.5, type = 3)
50%
"2016-03-30"
> quantile(mydates, p = 0.5, type = 4)
50%
"2016-03-30"
See ?quantile
for details.
答案 1 :(得分:1)
只需从排序数据的一端修剪一个值,然后选择median
:
#later date
median(sort(mydates)[-1])
[1] "2016-05-31"
#earlier date
median(sort(mydates)[-length(mydates)])
[1] "2016-03-30"