根据其他列的某些条件取列平均值我正在寻找一种根据另一列上的某些条件取列数据平均值的方法。
下表显示了我想要实现的目标。
我想获取时间平均强度值并将平均值制成一个新列。
平均值将基于“步骤”和组作为触发器进行计算,即来自同一组和同一步骤的所有强度值将
进行平均并制表一次。 我尝试了 Col 均值函数,但它不断多次插入平均值。
顺便说一句,是否可以创建一个带有摘要(平均值)的新表。 该表将包括已平均的步骤、所属组和平均值。(仅红色数据)
| 时间戳 | 步 | 强度 | 团体 | (想要平均值)例如 |
1 | 1 | 110 | A | 119.7 |
| 2 | 1 | 115 | A | - |
| 3 | 1 | 123.5 | A | - |
| 4 | 1 | 124 | A | - |
| 5 | 1 | 126 | A | - |
| 3 | 2 | 132 | 乙 | 205.73 |
| 4 | 2 | 140 | 乙 | - |
| 5 | 2 | 345.2 | 乙 | - |
| 1 | 2 | 10 | A | 18.33 |
| 2 | 2 | 20 | A | - |
| 3 | 2 | 25 | A | - |
| 。 | 。 | 。 | 。 | |
| 。 | 。 | 。 | 。 | |
消费者和市场研究回复:根据其他列的某些条件取列平均值谢谢吉姆。
回复:根据其他列的某些条件取列平均值您的问题有几种解释方式。
- 组平均值的计算中不包括任何强度 > 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 ),
.
)
回复:根据其他列的某些条件取列平均值谢谢你,公式有效。 顺便说一句,是否可以将此“If”公式嵌套到另一个“If”中,以便仅当“强度”大于 100 时才执行该公式。 那么公式会是什么样子呢?
回复:根据其他列的某些条件取列平均值对公式稍加修改就会得到你想要的

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