R 为每行应用时间序列模型

R 为每行应用时间序列模型,r,dataframe,time-series,R,Dataframe,Time Series,我有一个dataframe(df),它是具有以下结构的宽数据集 ID 2015/01/01 2015/02/01 2015/03/01 2015/04/01 A1 42 42 24 32 A2 22 22 24 32 A3 12 15 19 22 A4 8 12 18 24 我想为每一行建立时

我有一个dataframe(df),它是具有以下结构的宽数据集

ID 2015/01/01 2015/02/01 2015/03/01 2015/04/01
A1 42         42        24          32 
A2 22         22        24          32 
A3 12         15        19          22 
A4 8          12        18          24 
  • 我想为每一行建立时间序列模型,因此将有N个 时间序列模型,其中N=数据帧中的行数
我厌倦了以下内容:

ts_1 <-  ts(df[1:1,], start = c(2015, 05), frequency = 12)

ts_1_stl <- stl(ts_1, s.window = "periodic")
Error in stl(ts_1, s.window = "periodic") : only univariate series are allowed
  • 我做错了什么,我如何适用于每一行

如果我们在每一行上应用(第一列是'ID',一个不需要的字符类列),我们可以使用
apply
MARGIN=1

apply(df[-1], 1, FUN = function(x) ts(x, start = c(2015, 05), frequency = 12))
对于整个数据集,我们需要
unlist

ts(unlist(df[-1]), start = c(2015, 05), frequency = 12)

我们假设“df”有更多的列,以便有足够的观测值,即“周期”至少有2个周期工作

set.seed(24)

df我猜第一个语句应该是
ts(unlist(df[-1]),start=c(2015,05),frequency=12)
或者如果你想为每一行
应用它(df[-1],1,FUN=function(x)ts(x,start=c(2015,05),frequency=12))
非常感谢!!!非常感谢!我投了赞成票
set.seed(24)
df <- cbind(Col1 = LETTERS[1:4], as.data.frame(matrix(rnorm(31*4), ncol=31)))
res <- apply(df[-1], 1, FUN = function(x) stl(ts(x, start = c(2015, 05),
           frequency = 12), s.window = "periodic"))