他の列の条件に基づいて列の平均を取得します。別の列の条件に基づいて列データの平均を取る方法を探しています。
以下の表は、私が達成したいことを示しています。
時間平均強度値を取得し、平均値を含む新しい列を表にしたいと考えています。
平均は「ステップ」とトリガーとしてのグループに基づいて取得されます。つまり、同じグループと同じステップからのすべての強度値が取得されます。
平均化して一度集計します。 Col 平均関数を試しましたが、平均値が複数回挿入され続けます。
ところで、集計(平均値)を含む新しいテーブルを作成することは可能ですか。 テーブルには、平均化されたステップ、そのステップが属するグループ、および平均値が含まれます(赤色のデータのみ)。
| タイムスタンプ | ステップ | 強度 | グループ | (平均が欲しい) たとえば |
1 | 1 | 110 | あ | 119.7 |
| 2 | 1 | 115 | あ | - |
| 3 | 1 | 123.5 | あ | - |
| 4 | 1 | 124 | あ | - |
| 5 | 1 | 126 | あ | - |
| 3 | 2 | 132 | B | 205.73 |
| 4 | 2 | 140 | B | - |
| 5 | 2 | 345.2 | B | - |
| 1 | 2 | 10 | あ | 18.33 |
| 2 | 2 | 20 | あ | - |
| 3 | 2 | 25 | あ | - |
| 。 | 。 | 。 | 。 | |
| 。 | 。 | 。 | 。 | |
消費者および市場調査Re: 他の列の条件に基づいて列の平均を取るありがとうジム。
Re: 他の列の条件に基づいて列の平均を取るあなたの質問にはいくつかの解釈方法があります。
- グループ平均の計算には、強度 > 100 の値は含めないでください。
If( Row() == 1 | Lag( :Group ) != :Group | Lag( :Step ) != :Step,
Col Mean( If( :Intensity > 100, :Intensity, . ), :Group, :Step ),
.
)
- グループ内の強度の最初の値が 100 を超える場合は、グループ平均を計算しません。
If( (Row() == 1 | Lag( :Group ) != :Group | Lag( :Step ) != :Step) & :Intensity > 100,
Col Mean( :Intensity, :Group, :Step ),
.
)
Re: 他の列の条件に基づいて列の平均を取るありがとう、式がうまくいきました。 ところで、この「If」式を別の「If」にネストして、「強度」が 100 より大きい場合にのみこの式が実行されるようにすることは可能ですか。 その場合、式はどのようになりますか?
Re: 他の列の条件に基づいて列の平均を取る式を少し変更すると、必要なものが得られます

If( Row() == 1 | Lag( :Group ) != :Group | Lag( :Step ) != :Step,
Col Mean( :Intensity, :Group, :Step ),
.
)