【问题标题】:Skip/filter table row跳过/过滤表行
【发布时间】:2017-04-25 20:47:27
【问题描述】:

我正在计算表格列的平均值。 但在我计算这个之前,我想过滤掉具有特定值'Gender = 0'的每一行。

我已经在 excel 中计算了性别过滤后的预期平均值,但我未能在我的脚本中重新创建这个值。我在编程方面非常新手,我确信我犯了一些明显的错误。我试过在这里查看类似的问题,但无法将它们应用于我的脚本。

使用处理(基于 Java)。

我的数据片段

//LOOP THROUGH TABLE AND FILTER
  for (int column=0; column<highTable.getColumnCount(); column++)
  {
    float ColumnTotal=0; 

    for (int row=0; row<highTable.getRowCount(); row++)
    {

//I want to filter out all rows from the table that is 'Gender = 0'
      if (highTable.getInt(row, "Gender") == 0)
      {
        continue; //I've also tried row++ here, this works depending on the value of the last row, oterhwise it crashes. Also, I think it fails to skip when there are multiple 'gender 0' in succession, bacause I've calulated the return value in excel, and this script returns a slightly wrong number. 
      }

      float rowvalue = highTable.getInt(row, column); 
      ColumnTotal += rowvalue; 
      highAverage[column]= ColumnTotal/highTable.getRowCount(); 
    }
  }

【问题讨论】:

  • 不要使用“代码片段”标签。这不适用于 Java。只需选择您的代码并使用{} 按钮。
  • 请发minimal reproducible example 而不是断开连接的sn-p。

标签: java arrays filter row processing


【解决方案1】:
  1. 在完成row 循环之前不要计算highAverage[column]
  2. 在进行计算时,使用gender != 0 所在的行数,而不是highTable.getRowCount()

您需要一个新的局部变量 - 与您的 ColumnTotal 变量的范围相同。在将rowValue 添加到ColumnTotal 的同时增加它。最后,在计算平均值之前,请注意不要被零除。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-03
    • 1970-01-01
    相关资源
    最近更新 更多