У меня есть код (ниже), который применяет линейную модель за один квартал на основе данных за предыдущий квартал для оценки недостающих данных, и это работает.
data <- data %>%
nest_legacy(-groupvar1, -groupvar2) %>%
mutate(modelvar1 = map(data, ~lm(var1 ~ quarter_date, data = .)),
modelvar2 = map(data, ~lm(var2 ~ quarter_date, data = .)),
var1_pred = map2(modelvar1, data, predict),
var2_pred = map2(modelvar2, data, predict)) %>%
select(-modelvar1, -modelvar2) %>%
unnest_legacy()
Я хочу доказать это в будущем используя новый код для гнезда. Я следовал инструкциям на странице справки и нашел следующее:
data = data %>%
nest(data = c(groupvar1, groupvar2)) %>%
mutate(modelvar1 = map(data, ~lm(var1 ~ quarter_date, data = .)),
modelvar2 = map(data, ~lm(var2 ~ quarter_date, data = .)),
var1_pred = map2(modelvar1, data, predict),
var2_pred = map2(modelvar2, data, predict)) %>%
select(-modelvar1, -modelvar2) %>%
unnest(data, cols = c(var1, var2))
Однако я постоянно получаю сообщение об ошибке
Ошибка: столбец c(aasb, tobd)
должно быть длиной 701 (количество строк) или единицей, а не 1402
Очевидно, я что-то не так делаю, но понятия не имею, что это. Может ли кто-нибудь, пожалуйста, дать некоторое представление? Спасибо!
Редактировать: вот пример, который может помочь.
quarter_date = as.Date(c("2014-01-01", "2014-04-01", "2014-01-01", "2014-07-01", "2014-04-01"))
groupvar1 = c("spec1", "spec2", "spec1", "spec3", "spec3")
groupvar2 = c("loc1", "loc2", "loc3", "loc2", "loc3")
var1 = c(0, 656, 268, 78, 92)
var2 = c(87789, 45678, 23367, 76573, 68786)
test = tibble(groupvar1, groupvar2, var1, var2, quarter_date)