我想在管道内进行一年的线性外推。我的想法与此简单示例类似,但是要使用
可再现的示例:
但是它不起作用,相反我得到了以下错误信息:
dplyr::group_by()
在管道内进行操作。有一些类似于这个示例、示例或示例。但我无法得到理想的输出结果。可再现的示例:
test.frame <- data.frame(Country =
rep(c("Austria", "Brazil", "Canada"), each = 3, times = 3),
Entity = rep(c("CO2","CH4","N2O"), times = 9),
Year = rep(c(1990:1992), each = 9),
value = runif(27, 1,5))
test.frame2 <- data.frame(Country =
rep(c("Austria", "Brazil", "Canada"), each = 3),
Entity = rep(c("CO2","CH4","N2O"), times = 3),
Year = rep(c(1993), each = 3),
value = 0)
results_frame <- test.frame %>%
dplyr::bind_rows(test.frame2)
我有两个分组类别(国家和实体),我想使用1990年至1992年的值来使用线性外推填充1993年的值。
根据这篇文章,我可以估算出线性模型:
linear_model <- test.frame %>%
dplyr::group_by(Country, Entity) %>%
lm(value ~ Year, data=.)
results <- predict.lm(linear_model, test.frame2)
但是,results
并没有显示期望的输出。因此,按照这里提出的解决方案,我尝试了以下操作:
results_frame <- test.frame %>%
dplyr::group_by(Country, Entity) %>%
do(lm( value ~ Year , data = test.frame)) %>%
predict.lm(linear_model, test.frame2) %>%
bind_rows(test.frame)
但是它不起作用,相反我得到了以下错误信息:
非常感谢您的帮助!错误:结果1、2、3、4、5...必须是数据框架,而不是lm