分组后如何在一个函数(t.test)中使用2列

How to use 2 columns in one function(t.test) after group by

我有一个列表,我需要在其中对 2 列使用 t.test 函数。我知道我可以做到

t.test(myF$before, myF$after)

但是分组后我有很多组,一个一个做起来会很麻烦

我通过 SQL 查询获取数据,如下所示:

myF <- sqlQuery(conn, 'Select colA, colB, colC, before, after from MyTable')

以下代码将逐一给出 beforeafter 列的意思

aggregate(cbind(before = before, after = after) ~ colA+colB+colC, 
          data = myF, 
          FUN = mean)

输出类似于:

colA      colB     colC      before after
GroupA1   GroupB1  GroupC1   110    11
GroupA2   GroupB1  GroupC1   44     15
GroupA3 .....................
......

所以我想在每个组的 beforeafter 列之间获得 t.test 个结果。我怎样才能做到这一点?

您没有提供明确的输入或预期的输出,但它看起来像,例如,

myF %>% group_by(colA, colB, colC) %>% summarise(pval = t.test(.$before, .$after)$p.val)

应该达到你想要的。