首页 > 解决方案 > 如何优化涉及 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

标签: rdplyr

解决方案


推荐阅读