Группировать по файлу XDF?

Скажем, у меня есть огромный исходный XDF-файл, созданный с помощью RevoScaleR. Я хочу создать новый целевой XDF, сгруппировав исходные записи в столбцах A, B, C и вычислив сумму, min, max, avg, std отклонение в столбце D.

Давайте предположим, что целевые данные слишком велики, чтобы поместиться в память. Как мне поступить? Я не смог найти много информации о группировке по операциям в документации.

2 ответа

Решение

Пакет dplyrXdf позволяет вам выполнять такие операции dplyr над файлами Xdf.

library(dplyrXdf)
src <- RxXdfData("src.xdf")
dest <- src %>%
    group_by(A, B, C) %>%
    summarise(sum=sum(D), min=min(D), max=max(D), mean=mean(D), sd=sd(D))

Если вы хотите создать новый xdf-файл, я предлагаю использовать библиотеку "RevoPemaR", которая включена в ML-сервер. Было бы неплохо, если бы вы добавили воспроизводимый пример, но ответ мог бы быть примерно таким:

library(RevoPemaR)
byGroupPemaObj <- PemaByGroup()
groupVals <- pemaCompute(
pemaObj = byGroupPemaObj, 
data = "input.xdf",
outData = "output.xdf", 
groupByVar =  c("A", "B", "C"), 
computeVars = c("D"),
    fnList = list(
     sum= list(FUN = sum, x = NULL, na.rm = TRUE),
     min= list(FUN = min, x = NULL, na.rm = TRUE)
     max= list(FUN = max, x = NULL, na.rm = TRUE),
     mean= list(FUN = mean, x = NULL, na.rm = TRUE),
     sd = list(FUN = sd, x = NULL, na.rm = TRUE)
    )
)

Но у вас также есть другая опция, которая называется rxSummary. Для каждой переменной:

rxSummary(D~F(A), 
    data = "input.xdf" ,
    byGroupOutFile = "out.xdf", 
    summaryStats = c( "Mean", "StdDev", "Min", "Max", "Sum")
)
Другие вопросы по тегам