R 将动物园时间序列从日平均值转换为月平均值

R 将动物园时间序列从日平均值转换为月平均值,r,time-series,zoo,lubridate,R,Time Series,Zoo,Lubridate,我用zoo创建了一个时间序列。它在很长一段时间(40年)内具有每日值。我可以很容易地绘制它,但我想要的是创建一个时间序列,从这个原始时间序列的月(平均)值,然后将其绘制为月值 我认为lubridate包可能是一个很好的选择,也许有一个简单的方法,但我不知道怎么做。我是R的初学者。这里有人给我一些建议吗?您可以使用xts软件包中的apply.monthly() library(xts) data(sample_matrix) x <- as.xts(sample_matrix, dateFo

我用zoo创建了一个时间序列。它在很长一段时间(40年)内具有每日值。我可以很容易地绘制它,但我想要的是创建一个时间序列,从这个原始时间序列的月(平均)值,然后将其绘制为月值


我认为lubridate包可能是一个很好的选择,也许有一个简单的方法,但我不知道怎么做。我是R的初学者。这里有人给我一些建议吗?

您可以使用xts软件包中的
apply.monthly()

library(xts)
data(sample_matrix)
x <- as.xts(sample_matrix, dateFormat = "Date")
(m <- apply.monthly(x, mean))
#                Open     High      Low    Close
# 2007-01-31 50.21140 50.31528 50.12072 50.22791
# 2007-02-28 50.78427 50.88091 50.69639 50.79533
# 2007-03-31 49.53185 49.61232 49.40435 49.48246
# 2007-04-30 49.62687 49.71287 49.53189 49.62978
# 2007-05-31 48.31942 48.41694 48.18960 48.26699
# 2007-06-30 47.47717 47.57592 47.38255 47.46899

您可以使用
aggregate.zoo
,如示例所示:

x2a <- aggregate(x, as.Date(as.yearmon(time(x))), mean)

x2a谢谢你的回答!,这是有帮助的,但只有一个问题,如果我的一些日常数据是NA(即使它在一个月内只有一个),那么它会给我一个月平均值NA。我希望它忽略NA,用其他值计算平均值。你知道如何做到这一点吗?还有一个问题,你知道如何创建月累计值而不是月平均值吗?Thanks@OscarMolina:将
na.rm=TRUE
添加到
apply.monthly()
调用以删除缺少的值。什么是“月累计值”?我指的是总和,但我已经解决了,谢谢你的帮助!!是的,只需将
mean
更改为
sum
。另外,请参见。
x2a <- aggregate(x, as.Date(as.yearmon(time(x))), mean)