分组在XDF文件?

时间:2018-06-13 14:27:45

标签: r group-by microsoft-r revoscaler

假设我有一个使用RevoScaleR生成的巨大源XDF文件。我想通过对A,B,C列上的源条目进行分组来创建一个新的目标XDF,并计算D列上的sum,min,max,avg,std偏差。

让我们假设目标数据太大而不适合内存。我该怎么办?我无法在文档中找到有关group by operations的更多信息。

2 个答案:

答案 0 :(得分:3)

如果你想创建一个新的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")
)

答案 1 :(得分:2)

dplyrXdf package允许您在Xdf文件上执行这样的dplyr操作。

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