r - R rbind 在循环期间
问题描述
此代码适用于所有内容......除了最后的 rbind 部分。我想从循环中获取结果并将它们组合成一个预测数据框。我试图创建一个空的临时数据框(我预测 12 个季度),但我得到一个“大小不等”的错误。
有人可以帮我吗?我快到了 :-)
# Create actual data frame
Data_act <- subset(Data,Data$Type=="Actual")
# Create forecast frame with descriptive columns
Data_fc <- subset(Data[1:5],Data$Type=="Forecast")
# Create empty data frame for forecast results
Data_fc2 <- subset(Data[,6:9],Data$Type=="Forecast")
Data_fc2 <- Data_fc2[1:12,]
Data_fc3 <- Data_fc2 # temp table for loop
# Create list of unique forecast names
UniqueList <- unique(Data_act$forecast_name)
# Loop through unique list of forecast names
for(i in 1:length(UniqueList)){
# Subset data for forecast name
df <- subset(Data_act,Data_act$forecast_name==UniqueList[i])
# Create time series objects
dftsunits <- ts(df$Units,start = c(2015,1),frequency = 4)
dftsasp <- ts(df$ASP,start = c(2015,1),frequency = 4)
# Train forecasting models (Holt-Winters and ARIMA)
FC_Units_HW <- hw(dftsunits,h=12)
FC_Units_Arima <- auto.arima(dftsunits,lambda = 0) #lambda = 0 prevents negative forecasts
FC_ASP_HW <- hw(dftsasp,h=12)
FC_ASP_Arima <- auto.arima(dftsasp,lambda = 0)
# Forecast models for 12 quarters
FC_Units_HW2 <- forecast(FC_Units_HW,h=12)
FC_Units_Arima2 <- forecast(FC_Units_Arima,h=12)
FC_ASP_HW2 <- forecast(FC_ASP_HW,h=12)
FC_ASP_Arima2 <- forecast(FC_ASP_Arima,h=12)
# Save results
Data_fc3$Units_HW <- FC_Units_HW2$mean
Data_fc3$Units_ARIMA <- FC_Units_Arima2$mean
Data_fc3$ASP_HW <- FC_ASP_HW2$mean
Data_fc3$ASP_ARIMA <- FC_ASP_Arima2$mean
# Add results to master result data frame
Data_fc2 <= rbind(Data_fc2,Data_fc3)
}
解决方案
此代码有效。我很想知道如何提高效率。我需要在实际数据之后附加预测。
# Create actual data frame
Data_act <- subset(Data,Data$Type=="Actual")
# Create forecast frame with descriptive columns
Data_fc <- subset(Data[1:5],Data$Type=="Forecast")
# Create empty data frame for forecast results
Data_fc2 <- subset(Data[,6:9],Data$Type=="Forecast")
Data_fc2 <- Data_fc2[1:12,]
Data_fc3 <- Data_fc2 # temp table for loop
# Create list of unique forecast names
UniqueList <- unique(Data_act$forecast_name)
# Loop through unique list of forecast names and run time series
for(i in 1:length(UniqueList)){
# Subset data for forecast name
df <- subset(Data_act,Data_act$forecast_name==UniqueList[i])
# Create time series objects
dftsunits <- ts(df$Units,start = c(2015,1),frequency = 4)
dftsasp <- ts(df$ASP,start = c(2015,1),frequency = 4)
# Train forecasting models (Holt-Winters and ARIMA)
FC_Units_HW <- hw(dftsunits,h=12)
FC_Units_Arima <- auto.arima(dftsunits,lambda = 0) #lambda = 0 prevents negative forecasts
FC_ASP_HW <- hw(dftsasp,h=12)
FC_ASP_Arima <- auto.arima(dftsasp,lambda = 0)
# Forecast models for 12 quarters
FC_Units_HW2 <- forecast(FC_Units_HW,h=12)
FC_Units_Arima2 <- forecast(FC_Units_Arima,h=12)
FC_ASP_HW2 <- forecast(FC_ASP_HW,h=12)
FC_ASP_Arima2 <- forecast(FC_ASP_Arima,h=12)
# Save results
Data_fc3$Units_HW <- FC_Units_HW2$mean
Data_fc3$Units_ARIMA <- FC_Units_Arima2$mean
Data_fc3$ASP_HW <- FC_ASP_HW2$mean
Data_fc3$ASP_ARIMA <- FC_ASP_Arima2$mean
# Add results to master result data frame
Data_fc2 <- rbind(Data_fc2,Data_fc3)
}
Data_fc2 <- na.omit(Data_fc2)# Remove original 12 empty rows
Data_fc <- cbind(Data_fc,Data_fc2)
Data_Final <- rbind(Data_act,Data_fc)
推荐阅读
- proxy - 如何从本地目录安装 pyez
- microsoft-graph-api - 如何在 OneDrive 中正确删除与我共享的项目
- r - 子集和整个数据集闪亮的 R
- ansible - Ansible - 'block' 不是 Play 的有效属性
- python - 无法理解具有多个窗口的 PyQt5 GUI 的行为
- php - 未定义索引:第 221 行的 cache/smarty/compile/46/fa/c5/46fac58ea309f.file.list_content.tpl.php 中的 id_order
- solr - Solr:忽略字段匹配
- r - 使用基于 selectInput 的动态参数将绘图从 rmarkdown 复制到 Shiny 的问题
- linux - 如何计算只有 1 个字符的行数?
- user-interface - 仅将 jenkins 用作后端,并使用一些更好的 UI 作为前端