3

私は ddply を使用していますが、出力の配置方法にこだわっています。これは私が使用しているコードです。ご覧のとおり、最終的な出力 (timeseries.out) には、元のデータと予測されたデータが 1 つの列に含まれています。

data <- data.frame(Product = c(rep("Shampoo",5),rep("Soap",5)),
               TSdata = rnorm(10, 1, 10))

tsfun <-function(y){
  arima.out <- arima(y$TSdata)
  arima.fc <- predict(arima.out, n.ahead=5)
  return (data.frame(c(y$TSdata, arima.fc$pred)))
}

library(plyr)
timeseries.out <- ddply(data, .(Product), tsfun)

私が本当に欲しいのは、1 つの列に元のデータがあり、別の列に予測データがあり、空白のスポットが NA で埋められていることです。

data.out <-data.frame(Product = timeseries.out[1:10,1],
       Data = c(timeseries.out[1:5,2], rep("NA",5)),
       Forecast = c(rep("NA",5),timeseries.out[6:10,2]))

tsfun からの戻り値を data.out のように変更するにはどうすればよいですか? 私は多くのことを試しましたが、エラーが発生するか、間違った結果が得られます。

ありがとう!

4

1 に答える 1

1

戻り値を変更することで、必要な出力を得ることができました。正しい道を考えさせてくれたジョランに感謝します。

return ステートメントを単純に変更して、1 列ではなく 2 列を出力する

return (data.frame(y$TSdata, as.numeric(arima.fc$pred)))

NA を持つ 2 つの列の目的の出力に適合するように変更された戻り値

return (data.frame(c(y$TSdata, rep(NA, length(arima.fc$pred))),
                   c(rep(NA, length(y$TSdata)), arima.fc$pred)))
于 2013-01-05T16:07:19.573 に答える