首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >R中缓慢的dplyr查询

R中缓慢的dplyr查询
EN

Stack Overflow用户
提问于 2020-04-03 04:27:37
回答 2查看 316关注 0票数 5

我在R中有一些代码:

代码语言:javascript
运行
复制
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_numberpolicy_year分组,大约有300,000个(policy_number/policy_year)分组。

我在last()中引用的5列中有4列是日期。

这个查询大约需要3分钟才能运行,这很麻烦,因为我剩下的代码运行得相当快。我希望能加快速度。有什么我可以尝试的,可能会有帮助的吗?

(理想情况下,我会提供reprex,但我如何在这里做到这一点呢?不确定)

谢谢。

编辑:由于我总是使用给定(policy_number/policy_year)对的最后一条记录,有没有一些代码可以这样写:

代码语言:javascript
运行
复制
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)
EN

回答 2

Stack Overflow用户

发布于 2020-04-03 04:38:29

使用summarise_at而不是summarise

代码语言:javascript
运行
复制
library(dplyr)
df %>%
   group_by(policy_number, policy_year) %>%
   summarise_at(vars(term_start_date, term_end_date,
       term_end_date,termination_code, termination_date), last)
票数 4
EN

Stack Overflow用户

发布于 2020-04-03 04:40:36

关于这一点,有一个很棒的源码here。作者提出了几个很好的建议(参见他的评论部分)。我会考虑使用data.table聚合您的数据,或者如果您坚持使用dplyr,那么可以考虑定义一个键。相对基准的一些指标:

From source

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61000533

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档