我想知道是否有办法将每日数据平均为每周数据 . 我称之为CADaily的数据框如下所示:
> CADaily[1:10, ]
Climate_Division Date Rain
885 1 1948-07-01 0.8750000
892 1 1948-07-02 2.9166667
894 1 1948-07-03 0.7916667
895 1 1948-07-04 0.4305556
898 1 1948-07-05 0.8262061
901 1 1948-07-06 0.5972222
904 1 1948-07-17 0.04166667
905 1 1948-07-18 0.08333333
907 1 1948-07-20 0.04166667
909 1 1948-07-22 0.12500000
910 1 1948-07-21 NA
我的目标类似于根据日期(当然)和Climate_Division(范围从1到7)找到每日降雨量的平均值的总函数 . 我在网上搜索,我遇到了一个我能够使用的代码,但与我的目标并不相符:
apply.weekly(xts(CADaily[,-2], order.by= CADaily[,2]), FUN = mean)
这就是我希望它做的事情,但是我的专栏Climate_Division也是平均值 . 我只想平均Rain,并根据Climate_Division然后按Date订购 . 有没有办法,我可以这样做:
aggregate(CADaily, by =list(CADaily$Climate_Division, CADaily$Date), FUN = mean, na.rm = TRUE)
哪个日期是某种形式的周?或者还有另一种方式吗?
编辑:
亲爱的大家,
谢谢您的帮助 . 正如我原先想的那样,也许使用聚合并不是最好的方法 . 就产量而言,我想获得数据中每年的平均降雨量(1948年至1995年) . 换句话说,我希望得到一个很好的格式,我可以将其输入到具有星期结束日期形式的时间序列中 . 我正在寻找的输出(请记住可能存在NA值)是:
Climate_Division Date Rain
1 1948-07-03 1.527778
1 1948-07-10 0.6179946
1 1948-07-17 0.04166667
1 1948-07-24 0.08333333
...
1 1995-12-23 0.24513245
1 1995-12-30 0.12450545
或者是否有更好的方式表达由日期表示的每周数据?
谢谢您的帮助 .
3 回答
更新了答案
根据OP对请求的更新,我修改了代码以在每周(星期六)的定义日期的日期聚合数据 . 这次我只使用基数R中可用的函数 . 它忽略了NA(如果给定的End_of_Week-Climate_Division只有NA,则得到NaN,而不是数字) .
其他操作
此外,使用此代码,您可以从其他聚合函数获得结果,假设结果是每个周分对的相同长度的原子向量 .
原始答案
尝试使用
lubridate
包 . 加载它,然后聚合(作为原始答案的一部分保留作为记录,这反映了OP按周汇总的请求) .我从之前的回答中回过头来 . 我认为这个更简单 .
您只需要找到每行的周末日期,然后汇总
xts
非常适合这种操纵 . 使用endpoints
来分组数据,然后sapply
每周处理一次 .我的结果是一周一个列表: