Код, показанный в вопросе, создает многомерный временной ряд, состоящий из 12 рядов (по одному на каждый столбец месяца), временным индексом которого является год; однако, то, что требуется, - это один одномерный месячный ряд.
Используя df1
, который воспроизводимо показан в конце заметки, сначала преобразуйте data.frame df1
в матрицу, используя transpose, а затем распутайте эту транспонированную матрицу столбец за столбцом в один вектор, используя c
. Теперь мы можем определить серию ts
напрямую:
tt <- ts(c(t(df1[-1])), start = df1$Year[1], freq = 12)
дает:
frequency(tt)
## [1] 12
tt
## Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
## 2014 1 2 3 4 5 6 7 8 9 10 11 12
## 2015 13 14 15 16 17 18 19 20 21 22 23 24
## 2016 25 26 27 28 29 30 31 32 33 34 35 36
## 2017 37 38 39 40 41 42 43 44 45 46 47 48
## 2018 49 50 51 52 53 54 55 56 57 58 59 60
Примечание
Пожалуйста, не , а используйте изображения, чтобы показать ваши входные данные, так как это означает, что любому, кто хочет ответить с ним, нужно будет перепечатать его. Воспроизведите его в виде кода R. На этот раз я сделал это для вас, изменив данные, чтобы не вводить все эти цифры.
df1 <- as.data.frame(cbind(2014:2018, matrix(1:60, ncol = 12, byrow = TRUE)))
names(df1) <- c("Year", month.abb)