gpt4 book ai didi

r - 使用 ddply 时拆分列

转载 作者:行者123 更新时间:2023-12-04 09:16:59 24 4
gpt4 key购买 nike

我正在使用 ddply,并且我坚持输出的排列方式。这是我正在使用的代码。如您所见,最终输出 (timeseries.out) 在一列中包含原始数据和预测数据。

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)

我真正想要的是一列中的原始数据,以及另一列中用 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?我已经尝试了很多方法,但要么出现错误,要么得到错误的结果。

谢谢!

最佳答案

通过更改返回值,我能够获得我想要的输出。感谢 joran 让我在正确的道路上思考。

简单修改返回语句,输出两列而不是一列

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

修改返回值以适应具有 NA 的两列的所需输出

return (data.frame(c(y$TSdata, rep(NA, length(arima.fc$pred))),
c(rep(NA, length(y$TSdata)), arima.fc$pred)))

关于r - 使用 ddply 时拆分列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14163882/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com