【发布时间】:2014-10-13 07:01:02
【问题描述】:
所以我有一个看起来像这样但没有周末的数据集:
X1 X2
3798 2009-12-29 0
3799 2009-12-30 0
3800 2009-12-31 0
3802 2010-01-02 0
3803 2010-01-03 2.1
3804 2010-01-04 0
3805 2010-01-05 0
3806 2010-01-06 0
3807 2010-01-07 0
3808 2010-01-08 0
3809 2010-01-09 0
3810 2010-01-10 6.8
3811 2010-01-12 0
3812 2010-01-13 0
3813 2010-01-14 17.7
3814 2010-01-16 0
3815 2010-01-17 0
3816 2010-01-18 1.5
3817 2010-01-19 0
3818 2010-01-20 0
3819 2010-01-21 0
3820 2010-01-22 0
3821 2010-01-23 0
3822 2010-01-24 0
3823 2010-01-25 0
3824 2010-01-26 0
3825 2010-01-27 4.5
3826 2010-01-28 0
3827 2010-01-29 0
3828 2010-01-31 0
3829 2010-02-01 0
3830 2010-02-03 0
3831 2010-02-04 0
3832 2010-02-05 0
3833 2010-02-07 0
3834 2010-02-08 0
3835 2010-02-09 1.2
我想在每个月的第 15 天左右取 5 天平均值,如果 15 号发生在周末并且数据集中不存在,我想取最接近的 5 天平均值日期(14 日或 16 日),这可能吗?
所以这是预期的输出
X1 X2 5-day average
1 2009-12-14 2
2 2010-01-15 3
3 2010-02-15 4
4 2010-03-16 2
5 2010-04-15 1
6 2010-05-14 7
【问题讨论】:
-
目前还不清楚预期的结果是什么。您能否显示此示例数据的预期输出?
-
嗨,akrun,我编辑了帖子以添加预期的输出,我希望现在很清楚。
-
我的数据与这个有点不同,但想法很简单,我想在每个月的 15 号左右找到一个 5 天的平均值,如果 15 号不存在,我想找出最接近 15 日的 5 天平均值
-
Al_Fawzan 假设
df是数据集,因为您提到要删除周末indx <- !(weekdays(df$X1) %in% c('Saturday', 'Sunday'));df1 <- df[indx,]。那么我的猜测是你需要rollapply,就像影子建议的那样。df1$rmmean <- with(df1, rollapply(X2, 5, mean, fill=NA))。在当前示例中,我只有一个接近 15h 的值。2010-01-14 17.7 3.84 -
是的(rollapply)有效。但是我怎样才能提取我需要的日期(每个月的 15 日或最近的日期)?谢谢。
标签: r