我有一个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 I厌倦了以下几点:
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发布于 2016-12-23 05:41:37
如果我们在每一行上应用(第一列是'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”有更多的列,以便有足够的观测值,即至少有两个周期才能使“周期”工作。
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"))https://stackoverflow.com/questions/41295701
复制相似问题