Конвертировать ts во фрейм данных

У меня есть это тс:

   Point       Forecast      Lo 80    Hi 80      Lo 95    Hi 95
2015.173       1.657143 0.06698996 3.247296 -0.7747861 4.089072
2015.192       1.657143 0.06698996 3.247296 -0.7747861 4.089072
2015.212       1.657143 0.06698996 3.247296 -0.7747861 4.089072
2015.231       1.657143 0.06698996 3.247296 -0.7747861 4.089072
2015.250       1.657143 0.06698996 3.247296 -0.7747861 4.089072
2015.269       1.657143 0.06698996 3.247296 -0.7747861 4.089072
2015.288       1.657143 0.06698996 3.247296 -0.7747861 4.089072
2015.308       1.657143 0.06698996 3.247296 -0.7747861 4.089072

Как я могу преобразовать это в TS, я использую:

fct <- data.frame(date=as.Date(index(fca)), Y = melt(fca))

Но я получаю эту ошибку:

Ошибка в data.frame(date = as.Date(index(fca)), Y = melt(fca)):
аргументы подразумевают различное количество строк: 10, 16

Кто-то знает, как это исправить?

1 ответ

forecast Вывод выглядит только как фрейм данных, когда вы его печатаете. Но если вы посмотрите на структуру с str(fca), вы увидите грязные кишки объекта.

Что вы видите, когда звоните print(fca) является специально разработанным выходом в качестве наглядного пособия ТОЛЬКО. Это не означает, что основной объект - это матричный массив.

Решение состоит в том, чтобы извлечь нужные вам части и создать из них фрейм данных.

library(forecast)
fit <- Arima(WWWusage,c(3,1,0))
fca <- forecast(fit)
cbind.data.frame(Point=fca$mean, Lower=fca$lower, Upper=fca$upper)
#           Point Lower.80% Lower.95% Upper.80% Upper.95%
# 1   0.005151116 -1.271415 -1.947189  1.281718  1.957491
# 2  -0.170997839 -1.716453 -2.534568  1.374457  2.192572
# 3  -0.205288123 -1.782216 -2.616991  1.371640  2.206415
# 4  -0.221099340 -1.812749 -2.655317  1.370550  2.213119
# 5  -0.229741679 -1.830356 -2.677670  1.370872  2.218186
# 6  -0.234764205 -1.841557 -2.692142  1.372029  2.222614
# 7  -0.237705586 -1.849083 -2.702094  1.373671  2.226683
# 8  -0.239354235 -1.854302 -2.709204  1.375594  2.230495
# 9  -0.240158452 -1.857987 -2.714414  1.377670  2.234097
# 10 -0.240391964 -1.860607 -2.718298  1.379824  2.237514

редактировать

Даты очень хорошо спрятаны в данных. Я не нашел точный вектор даты. Я считаю, что это генерируется tsp атрибут, указывающий начало, конец и длину:

dates <- attr(fca$mean, "tsp")
datecol <- seq(from=dates[1], to=dates[2], by=dates[3])
Другие вопросы по тегам