代码之家  ›  专栏  ›  技术社区  ›  Jérôme Verstrynge

按xdf文件分组?

  •  0
  • Jérôme Verstrynge  · 技术社区  · 8 年前

    假设我有一个用revocaler生成的巨大源xdf文件。我想通过对A、B、C列上的源条目进行分组来创建一个新的目标xdf,并计算D列上的总和、最小值、最大值、平均值和标准偏差。

    假设目标数据太大,无法放入内存。我该怎么办?我在文档中找不到关于分组操作的很多信息。

    2 回复  |  直到 8 年前
        1
  •  2
  •   Hong Ooi    8 年前

    这个 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))
    
        2
  •  3
  •   DMillan    8 年前

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

    但是你还有另一个选择,那就是RX摘要。对于每个变量:

    rxSummary(D~F(A), 
        data = "input.xdf" ,
        byGroupOutFile = "out.xdf", 
        summaryStats = c( "Mean", "StdDev", "Min", "Max", "Sum")
    )