微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

为什么data.table花费太多时间来执行r中的脚本的特定部分给出了可复制的示例?

如何解决为什么data.table花费太多时间来执行r中的脚本的特定部分给出了可复制的示例?

我在处理几行脚本时非常缓慢地遇到了一些问题,如下所示。我认为apply和自定义函数会降低性能 有关加快此脚本/计算速度的任何建议?

一个人可以使用这些表并检查代码

dt1=data.table(location_id=rep("abc",52),report_date=c(rep("2020-04-22",24),rep("2020-04-23",rep("2020-04-24",4)),hour=c(rep(c(0:23),2),1,2,3),hr_visitors=c(20:67,345,236,123,67))


dt2=dt1[,date_hour := as.POSIXct(paste0(report_date,hour),format = "%Y-%m-%d %H")]

第1部分

使用日期和小时观察值创建时间戳列
Sys.time()
"2020-09-30 06:22:55 GMT"

dt2=copy(dt1)[,format = "%Y-%m-%d %H")]

Sys.time()
"2020-09-30 06:31:51 GMT"

第2部分

函数模型应用于更大的数据集
stl_model_outlier<-function(xyz){
model=ts(xyz,frequency=24)
f=stl(model,"periodic",robust = TRUE)
result=data.table(row_id=which(f$weights<1e-8))%>%mutate(outlier="Yes")
return(list(result))
}

Sys.time()
"2020-09-30 06:41:51 GMT"

results1<-dt2[,lapply(.SD,stp_model_outlier),by = location_id,.SDcols = "hr_visitors"]

Sys.time()
"2020-09-30 06:54:51 GMT"

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。