2017-04-25 107 views
0

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

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

使用处理(基于Java)。

我的数据

https://i.stack.imgur.com/f47bU.png

//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(); 
    } 
    } 
+0

请勿使用“代码段”标签。这不适用于Java。只需选择您的代码并使用'{}'按钮。 – camickr

+0

请发布[mcve],而不是断开连接的代码段。 –

回答

0
  1. 不计算highAverage[column]直到你与row循环中完成的片段。
  2. 在做这个计算时,使用gender != 0而不是highTable.getRowCount()的行数。

您需要一个新的本地变量 - 与ColumnTotal变量的范围相同。在将rowValue添加到ColumnTotal的同时将其递增。最后,在计算平均值之前,请防止被零除。