1

我有一个来自 FRED 数据的 265x7 矩阵,调用data并从标题中创建了一个变量名列表,使用varlist = names(data)[2:7]

我想做的是从中提取列2:7并将data它们放入一个ts对象中,每个对象都由存储在varlist. 我对 R 比较陌生。到目前为止,我管理的是创建数字变量,使用

lapply(varlist,function(x){assign(x,data[,x],envir = .GlobalEnv)})

不过,我想要实现的是创建ts具有属性的对象start = c(1947,1), frequency = 4

如果可能的话,我将如何将其实现到上述功能中?

4

2 回答 2

2

您可以创建一个ts给定矩阵。并且无需手动设置名称,它会选择矩阵名称并将它们用作时间序列名称。

     ts(data[2:7], start = c(1947, 1), frequency = 4)

这里举个例子,我给 ts 一个命名矩阵:

   ts(matrix(rnorm(3*5), nrow=3, ncol=5,
           dimnames=list(NULL,paste0('var',1:5))), 
           start = c(1947, 1), frequency = 4)
             var1        var2       var3       var4       var5
1947 Q1 1.3972600 -1.29789587 -0.4044754  1.8445556 -0.6240791
1947 Q2 0.8193313 -0.45867923 -0.3486047 -0.4864113  1.2318401
1947 Q3 0.5614728 -0.07158473 -1.0102497  1.5096153  0.4490764
于 2013-06-27T12:20:18.443 回答
2

这里不需要lapply。构造ts函数接受matrixdata.frame( mts)

set.seed(42)
fred_mat <- matrix(rnorm(265 * 7), ncol = 7,
                   dimnames = list(NULL, LETTERS[1:7]))

varlist <- colnames(fred_dat)[2:7]

fred_ts <- ts(fred_mat[, varlist], frequency = 4, start = c(1947, 1))

str(fred_ts)
 ## mts [1:265, 1:6] 1.065 0.813 -0.191 -2.7 0.061 ...
 ## - attr(*, "dimnames")=List of 2
 ##  ..$ : NULL
 ##  ..$ : chr [1:6] "B" "C" "D" "E" ...
 ## - attr(*, "tsp")= num [1:3] 1947 2013 4
 ## - attr(*, "class")= chr [1:3] "mts" "ts" "matrix"
于 2013-06-27T12:20:18.770 回答