在 XDF 文件上分组?
Group by on XDF file?
假设我有一个用 RevoScaleR 生成的巨大源 XDF 文件。我想通过对 A、B、C 列上的源条目进行分组并计算 D 列上的总和、最小值、最大值、平均值、标准偏差来创建新的目标 XDF。
让我们假设目标数据太大而无法放入内存。我该如何进行?我在文档中找不到很多关于分组操作的信息。
如果你想创建一个新的 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")
)
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))
假设我有一个用 RevoScaleR 生成的巨大源 XDF 文件。我想通过对 A、B、C 列上的源条目进行分组并计算 D 列上的总和、最小值、最大值、平均值、标准偏差来创建新的目标 XDF。
让我们假设目标数据太大而无法放入内存。我该如何进行?我在文档中找不到很多关于分组操作的信息。
如果你想创建一个新的 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")
)
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))