cbind函数与年度向量

时间:2017-11-18 17:18:29

标签: r loops for-loop vector cbind

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 个答案:

答案 0 :(得分:0)

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)