R中季度时间序列的合并

R中季度时间序列的合并,r,merge,xts,R,Merge,Xts,如何合并如下所示的a和b xts系列: a: 1948-01-01 1 1948-04-01 1 1948-07-01 1 1948-10-01 1 b: 1948-03-01 2 1948-06-01 2 1948-09-01 2 1948-12-01 2 结果应该是这样的 a b 1948Q1 1 2 1948Q2 1 2 1948Q3 1 2 1948Q4 1 2 日期的格式并不重要,只要

如何合并如下所示的a和b xts系列:

a:

1948-01-01  1

1948-04-01  1

1948-07-01  1

1948-10-01  1

b: 
1948-03-01 2

1948-06-01 2

1948-09-01 2

1948-12-01 2
结果应该是这样的

          a   b

1948Q1    1   2

1948Q2    1   2

1948Q3    1   2

1948Q4    1   2
日期的格式并不重要,只要a和b按季度对齐即可。使用indexFormat()和%b%Y等进行月度索引更容易做到这一点,但没有针对季度的索引


聚合(a,as.yearqtr)效果不太好,因为出于某种原因,它将第二季度作为一年的第一季度。然后,如果你想取年平均值,那么每年都要取第二季度、第三季度、第四季度、第一季度,而不是第一季度到第四季度。所以,我正在寻找另一种方法。如果有,请告诉我

尝试以下两步解决方案:

# Step 1: set rownames as quarters
library(zoo) 
rownames(a) <- format.yearqtr(as.Date(a$V1))
rownames(b) <- format.yearqtr(as.Date(b$V1))
# Step2: merge by rownames (quarters)
merge(a, b, by = "row.names", all = TRUE, suffixes = c(".a",".b"))[, -c(2, 4)]
# output (you can now store the result in a dataframe and change colnames as you want)
  Row.names V2.a V2.b
1   1948 Q1    1    2
2   1948 Q2    1    2
3   1948 Q3    1    2
4   1948 Q4    1    2
#步骤1:将行名设置为四分之一
图书馆(动物园)

rownames(a)谢谢,但要做到这一点,首先需要提取索引,更正它,然后将其与序列一起放回。很多系列赛都很难做到。有没有办法直接在xts对象上执行此操作?yq非常感谢!我还发现了一个更简单的解决方案:索引(a)=(as.yearqtr(索引(a)))。它将%Y%m%d格式更改为Y Q。
a <- structure(list(V1 = c("1948-01-01", "1948-04-01", "1948-07-01", 
"1948-10-01"), V2 = c(1L, 1L, 1L, 1L)), .Names = c("V1", "V2"
), class = "data.frame", row.names = c("1948 Q1", "1948 Q2", 
"1948 Q3", "1948 Q4"))
b <- structure(list(V1 = c("1948-03-01", "1948-06-01", "1948-09-01", 
"1948-12-01"), V2 = c(2L, 2L, 2L, 2L)), .Names = c("V1", "V2"
), class = "data.frame", row.names = c("1948 Q1", "1948 Q2", 
"1948 Q3", "1948 Q4"))