如何将Date类日期向量转换为日期间隔并计算间隔中位数?
解决日期相邻间隔与中位数计算问题
嗨,这问题我熟!我来一步步教你怎么得到想要的相邻日期间隔,再算出中位数~
首先,你已经有了日期向量mytimes,第一步得先把日期按时间顺序排好(因为原始数据是乱序的):
mytimes <- as.Date(c("2014-08-15", "2014-08-29", "2014-08-01", "2014-09-19", "2014-10-31")) sorted_times <- sort(mytimes)
接下来,要得到相邻日期的间隔:R里的diff()函数专门用来计算向量中相邻元素的差值,对于Date类型的向量,它会直接返回天数差。不过因为你想要包含第一个日期与自身的间隔(也就是0),所以我们把0和diff()的结果拼在一起就行:
intervals <- c(0, diff(sorted_times))
运行这段代码后,intervals就是你想要的结果:0 14 14 21 42。
最后,计算间隔的中位数就很简单了,直接用median()函数:
median_interval <- median(intervals)
这里算出来的中位数是14,完全符合预期~
顺便说一句,你之前用的sort(mytimes) - min(mytimes)是计算每个日期和最早日期的总天数差,和相邻间隔是不同的统计逻辑,现在用diff()就精准解决了你的需求哦!
内容的提问来源于stack exchange,提问作者alice m w
相关产品推荐
相关产品推荐

