我正在尝试使用给定数据的预测来完成基于时间的数据框。我的数据框看起来像这样:
df <- data.frame(duration = c(2000,2001,2002,2003,2004,2005),
values = c(120,130,140,100,150,170),
values2 = c(values = c(10,30,40,10,15,17)))
我已经用以下方法计算了两个变量的预测:
vc <- data.frame(forecast(df$values))
tc <- data.frame(forecast(df$values))
但我的问题是,我想在facet_grid
和values
values2
的一个折线图中显示预测和观察数据框。
我猜我应该和rbind
一起融化它们。但由于数据帧中的行数不同,这是不可能的。
那么对此有正确的解决方法吗?
感谢您的帮助!
答案 0 :(得分:0)
不确定这是forecast
背后的功能。
我就是这样做的。
library(reshape2)
library(forecast)
library(ggplot2)
library(dplyr)
vc <- data.frame(forecast(df$values))
tc <- data.frame(forecast(df$values2))
# Bind them
df2 <- rbind(vc,tc)
# Name them
df2$variable <- c(rep('values', 10), rep('values2', 10))
# Assign duration for plotting
df2$duration <- rep(2006:2015, 2) # not sure if the years are correct
# Melt original data
m_df <- melt(df, id = 'duration')
我们需要使用full_join()
将values
和Point.Estimate
合并为不具有相同值的持续时间列
# Plot
ggplot(full_join(m_df, df2),
aes(duration, value)) +
facet_wrap(~variable) +
geom_point() +
geom_line() + geom_line(aes(duration, Point.Forecast), col='red')
结果