首页 文章

与dplyr中的data.table不同

提问于
浏览
0

我试图使用 data.table 获得更好的性能,但不知道如何在 dplyr 中执行相当于 distinct %>% summarize 的操作 . 任何想法如何我可以调整以下代码 data.table

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

1 回答

  • 3

    您可以使用 data.table 以2个步骤执行组,不同和求和 . 首先,将 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")
    ]
    

相关问题