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