我有代码(如下),它根据上一季度的数据在一个季度应用线性模型来估计缺失的数据,这是可行的。
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(行数)或 1,而不是 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)