r - 如何优化涉及 dyplr 包的 R 脚本(给出的示例)?
问题描述
我有一个名为 df (8 GB) 的巨大数据文件,我想使用 dyplr 进行一些数据操作,如下所述。
df<-data.frame(customer=c("x","x","x","y","y"),location_id=c(100,100,100,200,200),
report_date=c("2019-12-12","2019-12-12","2019-12-12","2019-11-12","2019-11-12"),
local_hour=c(10,11,11,4,5),created_time=c("2019-12-22 15:50:04","2019-12-22
16:50:04","2019-12-22 17:55:07","2019-11-22 05:50:04","2019-11-22 06:53:04"))
df$created_time<- as.POSIXct(df$created_time,format="%Y-%m-%d %H:%M:%S")
这是我关注的数据操作步骤,temp1 需要 25 分钟才能执行
temp1 <-df %>%
group_by(customer,location_id,report_date,local_hour)%>%
summarise(created_time = max(created_time)) %>%
ungroup()
这是我预期的数据框,此步骤需要 3-4 分钟才能执行
expected_df<-df%>%
inner_join(temp1) %>%
as.data.frame()
基本上这是我的数据集
df
customer location_id report_date local_hour created_time
x 100 2019-12-12 10 2019-12-22 15:50:04
x 100 2019-12-12 11 2019-12-22 16:50:04
x 100 2019-12-12 11 2019-12-22 17:55:07
y 200 2019-11-12 4 2019-11-22 05:50:04
y 200 2019-11-12 5 2019-11-22 06:53:04
这就是我得到的,这也是我的目标,但问题是,它需要 30 多分钟才能执行并影响我的计划任务。你们有更好的方法来更快地执行它吗?
expected_df
customer location_id report_date local_hour created_time
x 100 2019-12-12 10 2019-12-22 15:50:04
x 100 2019-12-12 11 2019-12-22 17:55:07
y 200 2019-11-12 4 2019-11-22 05:50:04
y 200 2019-11-12 5 2019-11-22 06:53:04
解决方案
推荐阅读
- python - ColumnTransformer : 1D 数据传递给需要 2D 数据的转换器
- mysql - [MySQL] 日历聚合函数是否具有确定性
- sql - 拆分记录和复制数据到拆分记录(奇表结构)
- c# - 在 c# 中将 100mb 文件作为电子邮件附件发送时出现 system.outofmemoryexception
- javascript - 从文件输出流下载 png 文件
- specman - Specman e:delay() 可以将变量作为时间单位的输入吗?
- reactjs - 构建项目后访问本地文件时出错?
- node.js - 移除的中间件仍在使用
- oop - 现代 Fortran getter/setter
- nhibernate - 如何在 NHibernate 5 中捕获查询执行?