Группировать по файлу 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")
)