在 R 中绘制带有动物园的每月时间序列
Plot monthly time series with zoo in R
我将每天的时间序列读入 zoo
,然后按月汇总时间序列以计算平均值:
# ts is the original daily time series
# ts is a zoo
m = aggregate(ts, by=months, mean)
聚合日期 m
看起来像(值是捏造的):
April August December February January July
40 80 120 20 10 70
June March May November October September
60 30 50 110 100 90
# Check the class of index
> class(index(m))
[1] "character"
# Subsetting manually
> m[c('January', 'December']
[1] December January
120 10
很明显,m
的索引内部是按字符排序的,导致折线图难以阅读。
如何按月对聚合时间序列m
进行排序?
假设输入显示:
library(zoo)
ts <- zoo(1:12, as.Date(as.yearmon(2000) + 0:11/12))
aggregate(ts, by = match(months(index(ts)), month.name), mean)
请注意 month.name
内置于 R 中。
请确保您的问题是可重现的。题中输入缺失
G. Grothendleck 的想法的另一个选择是
聚合(x, by = gsub("\d\d\d\d-(\d\d)-\d\d", "\1", as.character(索引(x) )), 均值)
当我尝试G.Grothendleck的原始代码时出现错误,但也许我在创建测试数据时做错了
library(quantmod)
getQuote("APPL")
x <- as.zoo(x)
aggregate(x, by = match(months, month.name), mean)
出品:
# Error in match(months, month.name) : 'match' requires vector arguments
但这奏效了
aggregate(x, by = gsub("\d\d\d\d-(\d\d)-\d\d", "\1", as.character(index(x))), mean)
我将每天的时间序列读入 zoo
,然后按月汇总时间序列以计算平均值:
# ts is the original daily time series
# ts is a zoo
m = aggregate(ts, by=months, mean)
聚合日期 m
看起来像(值是捏造的):
April August December February January July
40 80 120 20 10 70
June March May November October September
60 30 50 110 100 90
# Check the class of index
> class(index(m))
[1] "character"
# Subsetting manually
> m[c('January', 'December']
[1] December January
120 10
很明显,m
的索引内部是按字符排序的,导致折线图难以阅读。
如何按月对聚合时间序列m
进行排序?
假设输入显示:
library(zoo)
ts <- zoo(1:12, as.Date(as.yearmon(2000) + 0:11/12))
aggregate(ts, by = match(months(index(ts)), month.name), mean)
请注意 month.name
内置于 R 中。
请确保您的问题是可重现的。题中输入缺失
G. Grothendleck 的想法的另一个选择是
聚合(x, by = gsub("\d\d\d\d-(\d\d)-\d\d", "\1", as.character(索引(x) )), 均值)
当我尝试G.Grothendleck的原始代码时出现错误,但也许我在创建测试数据时做错了
library(quantmod)
getQuote("APPL")
x <- as.zoo(x)
aggregate(x, by = match(months, month.name), mean)
出品:
# Error in match(months, month.name) : 'match' requires vector arguments
但这奏效了
aggregate(x, by = gsub("\d\d\d\d-(\d\d)-\d\d", "\1", as.character(index(x))), mean)