计算控制的平均值

时间:2017-05-16 22:53:13

标签: spotfire

我正在将分析从R迁移到Spotfire,并且在Spotfire中dplyr中的微不足道似乎很难。我有一个包含几个实验组的桌子,每组都有治疗和控制。我想计算每个实验组的对照平均值。

以下是一个示例:

+-------+------+-------+
| group | trmt | value |
+-------+------+-------+
|     a | cont |    32 |
|     a | cont |    28 |
|     a | t1   |    65 |
|     a | t1   |    57 |
|     a | t2   |    23 |
|     a | t2   |    19 |
|     b | cont |   132 |
|     b | cont |   128 |
|     b | t1   |   165 |
|     b | t1   |   157 |
|     b | t2   |   123 |
|     b | t2   |   119 |
+-------+------+-------+

和所需的输出:

+-------+------+-------+-------------+
| group | trmt | value | meanControl |
+-------+------+-------+-------------+
| a     | cont |    32 |          30 |
| a     | cont |    28 |          30 |
| a     | t1   |    65 |          30 |
| a     | t1   |    57 |          30 |
| a     | t2   |    23 |          30 |
| a     | t2   |    19 |          30 |
| b     | cont |   132 |         130 |
| b     | cont |   128 |         130 |
| b     | t1   |   165 |         130 |
| b     | t1   |   157 |         130 |
| b     | t2   |   123 |         130 |
| b     | t2   |   119 |         130 |
+-------+------+-------+-------------+

在R中,逻辑是微不足道的:

library(dplyr)
df <- read.csv('xx.csv', as.is=T)

controls <- df           %>%
  filter(trmt == "cont") %>%
  group_by(group)        %>%
  summarize(meanControl=mean(value))

result <- df             %>%
  inner_join(controls, by="group")

在Spotfire中执行此操作的好方法是什么?显然我可以用TERR做到这一点,但我想要纯粹的原生Spotfire。

1 个答案:

答案 0 :(得分:0)

您可以使用此公式

插入计算列
Avg(if([trmt]="cont",[value])) over ([group])

由于您了解R,我认为您可以轻松理解此公式,或者在阅读OVER函数后能够理解它,但如果需要解释,请告诉我。