将动物园时间序列从每日转换为每月意味着
Converting zoo time series from daily to monthly means
我使用 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
您可能还想将索引从 Date
转换为 yearmon
,您可以这样做:
index(m) <- as.yearmon(index(m))
m
# Open High Low Close
# Jan 2007 50.21140 50.31528 50.12072 50.22791
# Feb 2007 50.78427 50.88091 50.69639 50.79533
# Mar 2007 49.53185 49.61232 49.40435 49.48246
# Apr 2007 49.62687 49.71287 49.53189 49.62978
# May 2007 48.31942 48.41694 48.18960 48.26699
# Jun 2007 47.47717 47.57592 47.38255 47.46899
您可以使用 aggregate.zoo
,如示例所示:
x2a <- aggregate(x, as.Date(as.yearmon(time(x))), mean)
如果你想坚持zoo
。
我使用 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
您可能还想将索引从 Date
转换为 yearmon
,您可以这样做:
index(m) <- as.yearmon(index(m))
m
# Open High Low Close
# Jan 2007 50.21140 50.31528 50.12072 50.22791
# Feb 2007 50.78427 50.88091 50.69639 50.79533
# Mar 2007 49.53185 49.61232 49.40435 49.48246
# Apr 2007 49.62687 49.71287 49.53189 49.62978
# May 2007 48.31942 48.41694 48.18960 48.26699
# Jun 2007 47.47717 47.57592 47.38255 47.46899
您可以使用 aggregate.zoo
,如示例所示:
x2a <- aggregate(x, as.Date(as.yearmon(time(x))), mean)
如果你想坚持zoo
。