首页 > 解决方案 > data.table 与 dplyr 不同

问题描述

我正在尝试使用data.table以获得更好的性能,但不知道如何做相当于distinct %>% summarizein dplyr。有什么想法可以使以下代码适应data.table吗?

group_by_('x,y,z') %>%
distinct('h', .keep_all = TRUE) %>%
summarise(tot1 = sum(value1), tot2 = sum(value2))

标签: rdplyrdata.table

解决方案


您可以使用 2 步进行分组、区分和求和data.table。首先,使用设置为您的分组和不同变量unique()的参数。然后仅使用分组变量by执行 data.table 等效项。summarize()

dfq = data_frame(
    g1 = rep(c('a', 'b', 'c'), times = 12), 
    g2 = rep(c('d', 'e', 'f', 'g'), times = 9), 
    c3 = as.integer(30 * runif(36)), 
    d4 = rep(LETTERS[1:18], times = 2)
)

dtq = as.data.table(dfq)
dtq2 = unique(dtq, by = c("g1", "g2", "d4"))[
    , .(sum1 = sum(c3)), 
    by = c("g1", "g2")
] 

推荐阅读