r - data.table 与 dplyr 不同
问题描述
我正在尝试使用data.table
以获得更好的性能,但不知道如何做相当于distinct %>% summarize
in dplyr
。有什么想法可以使以下代码适应data.table
吗?
group_by_('x,y,z') %>%
distinct('h', .keep_all = TRUE) %>%
summarise(tot1 = sum(value1), tot2 = sum(value2))
解决方案
您可以使用 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")
]
推荐阅读
- c++ - c++中isdigit函数和while循环的问题
- vhdl - 对于某些操作,波形无法正常工作
- android - Xamarin Essentials 媒体选择器不断崩溃我的应用程序 - 没有异常或错误
- python - 用Python中的多个条件替换数组中的字符串值
- java - 如何解决“Gradle JAVA_HOME 设置为无效目录”以及如何在 IntelliJ 中正确设置 Gradle 工作区?
- regex - 从图像路径中提取 id
- java - 服务器未使用套接字编程在 java 中发送响应
- class - 神秘的 SCSS 覆盖我的 custom.scss
- python - '{{node conv2d_3/Conv2D} 从 1 中减去 3 导致的负维度大小
- python - 类方法:function(self)和function的区别在哪里?