извлекать подобранные значения для каждой групповой переменной в панельных данных

У меня есть набор панельных данных с большим количеством групп. Я рассчитал подогнанные значения для каждой группы и хотел бы объединить все подогнанные значения в новый набор данных. Я ищу возможный ярлык, чтобы не делать это вручную.

Следующий набор данных похож на тот, над которым я работаю (хотя и в гораздо меньшем масштабе с точки зрения групп).

set.seed(999)
dt <- data.frame("Group"=rep((LETTERS[1:10]), each=15),
  "Year"=2001:2015,"value"=5+rnorm(150, 3,1))
names(dt)
head(dt)
table(dt$Year, dt$Group)
library(reshape2)
dt_tbl1 <- dcast(dt,Year~Group)
dt_tbl1
library(forecast)
tsMat <- ts(dcast(dt, Year ~ Group), start=2001, freq=1)
dt_ses <- lapply(tsMat, function(x) ses(x))

Мне нужна помощь, чтобы автоматизировать следующий шаг. Добавьте все оставшиеся группы во фрейм данных.

dt_tbl2 <- data.frame("Year"=2001:2015,
data.frame(dt_ses$A$fitted),
data.frame(dt_ses$B$fitted),
data.frame(dt_ses$C$fitted))

И переименуйте переменные в новом наборе данных, чтобы они соответствовали исходным группам.

names(dt_tbl2)[2:4] <- c("A_hat", "B_hat", "C_hat")

Как только это будет завершено, dt_tbl2 должен иметь тот же формат, что и dt_tbl1.

Я пробовал использовать sapply () и lapply (), но, похоже, ничего не работает. Спасибо TCS


person TCS    schedule 30.06.2017    source источник


Ответы (1)


Вы можете попробовать transpose из purrr пакета, который транспонирует вложенные списки.

library(purrr)
t_dt_ses <- transpose(dt_ses)
dt_tbl3 <- data.frame(t_dt_ses$fitted)

# update the year column
dt_tbl3$Year<- 2001:2015

head(dt_tbl3)
#   Year        A        B        C        D        E        F        G        H        I        J
# 1 2001 7.618084 7.521736 8.709448 7.967254 8.096049 7.932307 7.997542 7.552510 7.855070 8.136634
# 2 2002 7.662074 7.521647 9.150131 7.967285 8.095947 7.932320 7.997708 7.552295 7.855037 8.136680
# 3 2003 7.234079 7.521702 9.005576 7.967083 8.096054 7.932381 7.997711 7.552369 7.855063 8.136535
# 4 2004 7.919614 7.521760 8.787972 7.967088 8.096149 7.932181 7.997613 7.552552 7.854865 8.136433
# 5 2005 8.073512 7.521898 8.865025 7.967149 8.096250 7.932232 7.997742 7.552446 7.854703 8.136329
# 6 2006 7.919455 7.521738 8.572195 7.967149 8.096238 7.932222 7.997629 7.552423 7.854840 8.136423
person shaojl7    schedule 30.06.2017