具有年度向量的 cbind 函数

cbind function with yearly vectors

for(t in 1921:2017) { 
  nam <- paste("", t, sep = "")
  assign(nam, window(aCPI_gr, start=c(t,1), end=c(t,12)))
}
aCPI_gr_y <- cbind(`1921`: `2017`) #doesn't work

此循环正在生成包含每年每个月的 CPI 数据的向量。现在我想用 cbind 将它们全部打包到一个数据框中,但我当然懒得在 cbind 函数中手动输入每年的向量。有没有一种简单的方法可以避免每年手动输入矢量?类似于 cbind(1921:2017)

1)矩阵如果你有一个跨越97年的每月单维ts系列,比如下面的测试系列tser,那么这将转换它到一个 12 x 97 矩阵,每列一年。如果不需要名称,可以省略 dimnames 参数。

tser <- ts(seq_len(12 * 97), start = 1921, freq = 12) # test data
m <- matrix(tser, 12, dimnames = list(month = 1:12, year = 1921:2017))

2) tapply 另一种方法是:

tapply(tser, list(month = cycle(tser), year = as.integer(time(tser))), c)