我正在将分析从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。
答案 0 :(得分:0)
您可以使用此公式
插入计算列Avg(if([trmt]="cont",[value])) over ([group])
由于您了解R
,我认为您可以轻松理解此公式,或者在阅读OVER
函数后能够理解它,但如果需要解释,请告诉我。