这个问题是这个线程的后续问题
我想在磁盘框架上执行三个操作
- 计算按两列分组的字段的不同值
id
(key_a 和 key_b) id
计算由两列中的第一列(key_a)分组的字段的不同值- 添加一列,其中包含第一列的不同值/两列的不同值
这是我的代码
my_df <-
data.frame(
key_a = rep(letters, 384),
key_b = rep(rev(letters), 384),
id = sample(1:10^6, 9984)
)
my_df %>%
select(key_a, key_b, id) %>%
chunk_group_by(key_a, key_b) %>%
# stage one
chunk_summarize(count = n_distinct(id)) %>%
collect %>%
group_by(key_a, key_b) %>%
# stage two
mutate(count_summed = sum(count)) %>%
group_by(key_a) %>%
mutate(count_all = sum(count)) %>%
ungroup() %>%
mutate(percent_of_total = count_summed / count_all)
我的数据是磁盘框格式,不是数据框,有100M行8列。
我正在遵循本文档中描述的两步说明
我担心这collect
会使我的机器崩溃,因为它将所有东西都带到了内存中
我必须使用collect
才能在磁盘框架中使用 dplyr group bys 吗?