Как подсчитать уникальные объекты с disk.frame в R?
Я хочу преобразовать фрейм данных в фрейм диска, а затем посчитать первый столбец. Когда я пробую, он не считает количество уникальных значений столбца. Кажется, подсчитывает количество рабочих.
library(disk.frame)
options(future.globals.maxSize = Inf)
setup_disk.frame(workers = 8)
Это пример набора данных
bigint <- sample(123901239804:901283455390, 3*10^5)
df <- data.frame(bigint)
df %>%
summarize(ints = length(unique(bigint)))
df %>%
as.disk.frame %>%
summarize(ints = length(bigint)) %>%
collect
В первом запросе он получает этот вывод
ints
1 300000
Во втором запросе он получает этот вывод
ints
1 8
1 ответ
{disk.frame} поддерживает только некоторые функции группировки. Вы можете использовать
dplyr::n_distinct
df %>%
as.disk.frame %>%
summarize(ints = n_distinct(bigint)) %>%
collect
который дает
ints
1 300000
См. Список поддерживаемых групповых глаголов здесь https://diskframe.com/articles/10-group-by.html#list-of-supported-group-by-functions
Вы можете определить более индивидуальные групповые глаголы, следуя этому руководству
https://diskframe.com/articles/11-custom-group-by.html
Определенные глаголы группировки по не могут быть выполнены точным образом из-за разбиения на части disk.frame. Но это верно для всех систем "больших" данных.