r - data.table 中与 dplyr 中不同

标签 r dplyr data.table

我正在尝试使用data.table为了获得更好的性能,但不知道如何做相当于distinct %>% summarizedplyr 。任何想法如何我可以将以下代码改编为 data.table

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

最佳答案

您可以使用data.table分两步进行分组、非重复和求和。首先,使用 unique() 并将 by 参数设置为分组和不同变量。然后仅使用分组变量执行相当于 summarize() 的 data.table 操作。

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")
] 

关于r - data.table 中与 dplyr 中不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51751609/

相关文章:

R Markdown : Prevent page break within code results

r - 具有分组依据和分面的堆积条形图

r - 为 dplyr do 操作的列表输出分配名称

r - 使用 cut() 从多个数值变量创建许多因子变量,并从列表中提取中断

r - 从函数内部将函数环境设置为调用环境 (parent.frame) 的环境

r - Lubridate hour() 不适用于从 parse_date_time() 派生的时间

r - 如何在 R 中创建一个 Matlab 南瓜?

r - 如何将变异的列重新定位到原始列旁边?

r - 按组和逻辑表达式对行进行子集化 - data.table

R : group by with custom functions