我在R中有一些代码:
library(dplyr)
df_temp <- df %>%
group_by(policy_number, policy_year) %>%
summarise(term_start_date = last(term_start_date),
term_end_date = last(term_end_date),
on_cover_after = last(on_cover_after),
termination_code = last(termination_code),
termination_date = last(termination_date))主表df大约有700,000行乘130列。按policy_number和policy_year分组,大约有300,000个(policy_number/policy_year)分组。
我在last()中引用的5列中有4列是日期。
这个查询大约需要3分钟才能运行,这很麻烦,因为我剩下的代码运行得相当快。我希望能加快速度。有什么我可以尝试的,可能会有帮助的吗?
(理想情况下,我会提供reprex,但我如何在这里做到这一点呢?不确定)
谢谢。
编辑:由于我总是使用给定(policy_number/policy_year)对的最后一条记录,有没有一些代码可以这样写:
df_temp <- df %>%
group_by(policy_number, policy_year) %>%
mutate(counter = 1:n()) %>%
filter(counter == max(counter)) %>%
select(term_start_date,
term_end_date,
on_cover_after,
termination_code,
termination_date)发布于 2020-04-03 04:40:36
关于这一点,有一个很棒的源码here。作者提出了几个很好的建议(参见他的评论部分)。我会考虑使用data.table聚合您的数据,或者如果您坚持使用dplyr,那么可以考虑定义一个键。相对基准的一些指标:

From source
https://stackoverflow.com/questions/61000533
复制相似问题