小编Gui*_*pos的帖子

如何按行在data.table中添加时间序列对象(ts)?

我试图逐行存储ts对象.用于创建时间序列的月度数据(1980年和1981年的24个月值)在DT中按行顺序存储,因此我只想在DT中添加一列来存储每行的"ts"对象() .这是一个可重复的例子,我尝试了三种不同的选项,但它们似乎都没有像我预期的那样工作.

library(data.table)
DT <- data.table(ID=seq(1:10),
                 JAN_1980=rnorm(1:10),FEB_1980=rnorm(1:10),MAR_1980=rnorm(1:10),APR_1980=rnorm(1:10),MAY_1980=rnorm(1:10),JUN_1980=rnorm(1:10),JUL_1980=rnorm(1:10),AUG_1980=rnorm(1:10),SEP_1980=rnorm(1:10),OCT_1980=rnorm(1:10),NOV_1980=rnorm(1:10),DEC_1980=rnorm(1:10),JAN_1981=rnorm(1:10),FEB_1981=rnorm(1:10),MAR_1981=rnorm(1:10),APR_1981=rnorm(1:10),MAY_1981=rnorm(1:10),JUN_1981=rnorm(1:10),JUL_1981=rnorm(1:10),AUG_1981=rnorm(1:10),SEP_1981=rnorm(1:10),OCT_1981=rnorm(1:10),NOV_1981=rnorm(1:10),DEC_1981=rnorm(1:10))

# First attempt
DT[,TS_COL:=ts(.SD[,2:25,with=FALSE], start=c(1980,1), frequency=12)]

# Second
DT[,TS_COL:=ts(unlist(.SD[,2:25,with=FALSE]), start=c(1980,1), frequency=12)]

# Third
DT[,TS_COL:=list(list(list(ts(unlist(.SD[,2:25,with=FALSE]), start=c(1980,1), frequency=12))))]
Run Code Online (Sandbox Code Playgroud)

我希望能够以这种方式访问​​特定行的ts对象(还没有运气):

DT[1,TS_COL]
Run Code Online (Sandbox Code Playgroud)

...得到类似的东西(2年的月度数据):

             Jan         Feb         Mar         Apr         May         Jun         Jul         Aug         Sep         Oct         Nov         Dec
1980  2.13303849  0.74954206 -0.45112504  2.13558888  1.11883498 -0.39074470  1.77374480 -0.19513901  0.49920019 -1.12875185  0.45598049  1.97730211
1981  0.62764761 -0.86330094 -0.51585664  0.59677770 -0.71073980 -0.26208961 -0.38833227  1.39841244 -1.50490225 -0.72018921  1.06684672  0.07126184
Run Code Online (Sandbox Code Playgroud)

有关如何实现这一点的任何提示?

r time-series data.table

5
推荐指数
1
解决办法
1850
查看次数

标签 统计

data.table ×1

r ×1

time-series ×1