更有效地获取r中不同项目的度量值



我目前正在为80k个不同的项目获得一堆精度测量,我需要独立计算测量值,但目前花费的时间太长,所以想确定一种更快的方法来完成它。

下面是我的R代码和注释:

work_file:包含4个变量:item_id,日期,需求和预测

我代码:

output<-0
uniques<- unique(work_file$item_id)
for( i in uniques){
#filter every unique item
temporal<- work_file %>% filter(item_id==i)
#Calculate the accuracy measure for each item
x<-temporal$demand
x1<-temporal$forecast
item_error<- c(i, accuracy(x1,x)
output<-rbind(output, item_error)}

对于80k~唯一的物品需要花费数小时,

有什么建议吗?

R是一种向量化语言,因此可以避免使用循环。而且,循环中的绑定特别慢,因为每次迭代都会不断地删除和重新创建输出数据结构。

提供了"accuracy()"函数可以接受向量输入,这应该可以工作:没有样本数据进行测试,总是存在一些疑问。

answer<- work_file %>% 
group_by(item_id) %>% 
summarize(accuracy(forecast, demand))

这里,dplyr的group_by函数将收集不同的item_id,并传递这些向量以总结精度函数。

考虑使用高效的data.table方法

library(data.table)
setDT(work_file)[, .(acc = accuracy(forecast, demand)), item_id]

最新更新