【问题标题】:"apply" function using rxDataStep in RevoScaleR package使用 RevoScaleR 包中的 rxDataStep 的“应用”函数
【发布时间】:2013-10-31 07:20:05
【问题描述】:

我一直在寻找汇总 xdf 文件中不同块中存在的值,但我无法让它工作。

你们有没有一个代码 sn-p,在 rxDataStep 的转换中使用了任何 apply 函数?

【问题讨论】:

  • CRAN 上没有这样的包。它来自哪里?但无论如何,xdf文件中的数据结构是什么?如果我们知道这一点,我们可以建议使用*apply 函数的方法。
  • 我认为你不能在 rxDataStep 中聚合。您能否提供一个示例,说明您想要实现的目标,就好像您的数据在常规 data.frame 中一样?
  • @Carl:revoScaler 软件包是 Revolution R Enterprise 版本的一部分,因此您不会在 CRAN 上找到它。 .xdf 文件是包使用的本机外部存储器数据格式。如果您的数据大于内存,您会使用它。
  • @Alex:我的主要问题是,当我的数据作为 xdf 导入时,它会被分成多个块。当我尝试执行聚合时,例如:拥有每个日历日的产品信息和相关库存。我的数据没有按产品排序,因此一个产品的信息实际上分布在 xdf 中的多个块中。当我尝试计算每种产品每年的库存时,我没有得到汇总的结果,但我得到了按每个块划分的计数。有什么解决方法吗?
  • 我正在尝试自己找出 xdf 文件的聚合。如果您只需要计数,您可能可以使用 rxCube 函数:rxCube(~ product:day, data=your.xdf)

标签: r transform apply revolution-r


【解决方案1】:

使用 transformFunc 应用变换函数。您必须在工作节点上安装需要的软件包。使用 transformObjects 给 transformFunc 函数。

xformFunction <- function(data) {
  require(dplyr)
  df <- as.data.frame(data)
  df <- dplyr::summarise(dplyr::group_by(df, z))
  return(df)
}

rxDataStep(inData = input_xdf, outFile = t_xdf, transformFunc = xformFunction, transformPackages = c("dplyr"), overwrite = TRUE)

聚合将在节点上,因此在使用 Spark ComputeContext 时会得到重复的 z 值。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-15
    • 1970-01-01
    • 2019-05-23
    • 1970-01-01
    相关资源
    最近更新 更多