【发布时间】:2016-10-04 19:17:47
【问题描述】:
我刚刚开始学习 R 用于预测和分析目的,我决定尝试为我正在使用的预测模型创建一个完整的包(Additive Pickup)。我在一家酒店工作,我经常做的事情之一就是预测我们的需求,所以这肯定会让我的这部分工作更快更容易!
我已经创建了一些函数,这些函数将为我获取我的取件号码的数据框,现在我正在开发一个函数来平均该新数据框中用户定义的列数。我已经包含了用于创建一些示例数据的代码,以及我正在处理的代码。
样本数据:
test = data.frame(replicate(10, sample(0:2, 32, rep = TRUE)))
破码:
averagePickup = function(data, day, periods) {
# data will be your Pickup Data
# day is the day you're forecasting for (think row number)
# periods is the period or range of periods that you need to average (a column or range of columns).
pStart = ncol(data)
pEnd = ncol(data) - periods
row = (day-1)
new_frame = as.data.frame(matrix(nrow = 1, ncol = periods))
for(i in pStart:pEnd) {
new_frame[1,i] = mean(data[1:row , i])
}
return(sum(new_frame[1,1:i]))
}
这样做的目的是从数据中的最后一列向后迭代到用户定义的时间段。例如,将“周期”设置为 1 应该只返回最后一列的平均值之和。将其设置为 2 将产生最后一列和倒数第二列的平均值之和。
但是,当我尝试对此进行测试时,我收到一个错误,显示为
[(tmp`, 1, i, value = 0.9) 中的错误:新列 会在现有列之后留下孔
如果你们能提供任何建议,我们将不胜感激。另外,让我知道我是否完全零意义,并为关于这个问题的文章道歉......请注意,由于输入数据的格式化方式,这必须向后迭代。
【问题讨论】:
-
请包含数据以使其可重现
-
是的...这可能会有所帮助...您可以使用此代码来获得与我正在使用的框架相似的框架。 test = data.frame(replicate(10, sample(0:2, 32, rep = TRUE))) 应用于我的代码,我想从 X10 列开始。让我知道是否还有其他可以使这一点更清楚的事情!
-
Day是行号,periods是列号。基本上,每一行是一周中的一天,每一列是一个观察期。如果将day设置为 11 并将periods设置为 1,则该函数应取第 1 列中前 10 个观察值的平均值。从右到左似乎无法正常工作。