h2o.ai摘要功能与group_by不兼容

时间:2019-02-18 20:10:04

标签: r group-by h2o split-apply-combine

我正试图通过移至R + h2o.ai来(实质上)加速一些R代码。

我按单个因子变量分组,但是当我尝试计算加窗分位数,偏度或峰度时,会出错。

h2o中是否存在与split-apply-combine方法不兼容的摘要函数列表?它仅适用于sum,count或stdev等sql-analog函数吗?

此代码失败:

Fetch

此代码运行良好:

\PDO

错误文字(为简洁起见,被删节):

for(i in col_idx_list){
  proc_cols_list <- names(df.hex)[i]

  group_cols_list <- c("group_variable_factor")

  h2o.quantile(x=df.hex[,proc_cols_list])

  temp <- h2o.group_by(data=df.hex,
                       by=group_cols_list,
                       mean(proc_cols_list),
                       var(proc_cols_list),
                       skewness(proc_cols_list),
                       gb.control=list(na.methods="ignore")  )

  if(i ==first_index){
    df_summs <- temp
  } else {
    df_summs <- h2o.cbind(df_summs , temp[,2:ncol(temp)])
  }
}

1 个答案:

答案 0 :(得分:1)

该错误似乎表明skewness是一个问题。有关h2o.group_by()中允许的聚合方法的完整列表,请参见documentation的“详细信息”部分(页面底部)。

为方便起见,我在此处添加“详细信息”部分-您可以看到当前不包括偏斜度(如果您有兴趣随意创建JIRA ticket,则可以这样做):

详细信息 对于gb.control中的na.method,有三种可能的设置。 “全部”将在功能计算中包括NA。 “ rm”将完全删除所有NA字段。 “忽略”将从分子中删除NA,但保留行以进行计算。如果提供的列表小于列组的数量,则该列表将由“忽略”填充。 请注意,要在gb.control列表中指定列名列表,必须添加col.names参数。与na.methods相似,如果长度小于提供的列组数目,则col.names将使用默认列名填充列表。 支持的功能包括nrow。此函数是必需的,并且接受生成的列的名称的字符串。其他受支持的聚合函数接受col和na参数来指定列和NA的处理(“ all”,“ ignore”和GroupBy对象; max计算为groupBy对象的每个组在col中指定的每一列的最大值; mean计算col为GroupBy对象的每一组在col中指定的每一列的平均值; min计算为GroupBy对象的每一组在col中指定的每一列的最小值; mode为GroupBy的每一组计算col所指定的每一列的模式object; sd计算为GroupBy对象的每组在col中指定的每一列的标准差; ss计算为groupBy对象的每组在col中指定的每一列的平方和; sum计算在colB中指定的每组GroupBy对象的平方和。 col代表GroupBy对象的每个组;而var计算为colB指定的每个GroupBy对象的每个组的方差。如果提供的聚合没有值(例如,以sum(col = X的max 1“,na =” all“)。mean(col =” X5“,na =” all“)。max()),则假定聚合应应用于除GroupBy列之外的所有列。但是,将不会对字符串列执行操作。他们将被跳过。再次注意,nrow是必需的,不能为空。