Группировать по XDF файлу? - PullRequest
0 голосов
/ 13 июня 2018

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

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

Ответы [ 2 ]

0 голосов
/ 13 июня 2018

Пакет 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))
0 голосов
/ 13 июня 2018

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

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")
)
...