r - 对按因子拆分的数据帧中的许多列应用 t 检验

标签 r dataframe plyr

我有一个带有两个级别的因子列和许多数字列的数据框。我想按因子列拆分数据帧并对列对进行 t 检验。

使用示例数据集 Puromycin 我希望结果看起来像这样:

Variable    Treated Untreated   p-value    Test-statistic CI of difference**** 
Conc        0.3450  0.2763          XXX     T           XX - XX
Rate        141.58  110.7272        xxx     T           XX - XX

我想我正在寻找一种使用 PLYR 的解决方案,该解决方案可以将上述结果输出到一个不错的数据帧中。

(嘌呤霉素仅包含两个数字变量,但我正在寻找的解决方案适用于具有许多数字变量的数据框)

更新 - 我会尽力澄清我的意思。

我想从看起来像这样的数据出发:
Grouping variable   var1    var2    var3    var4    var5
1           3   5   7   3   7
1           3   7   5   9   6
1           5   2   6   7   6
1           9   5   7   0   8
1           2   4   5   7   8
1           2   3   1   6   4
2           4   2   7   6   5
2           0   8   3   7   5
2           1   2   3   5   9
2           1   5   3   8   0
2           2   6   9   0   7
2           3   6   7   8   8
2           10  6   3   8   0

对于如下所示的结果数据框:
"Mean in group 1"   "Mean in group 2"  "P-value of difference" "N"

var1            ##          ##          ##          ##      
var2            ##          ##          ##          ##  
var3            ##          ##          ##          ##  
var4            ##          ##          ##          ##  
var5            ##          ##          ##          ##

也许它是我正在寻找的 mapply 的东西,因为我想通过两级因子将我的数据帧拆分为 dataframe1 和 dataframe2,并将函数(t-test)应用于 dataframe1 和 dataframe2 的第一部分,然后是对 dataframe1 和 dataframe2 的第二部分进行 t 检验,然后对 dataframe1 和 dataframe2 的第三部分进行 t 检验,依此类推,对由因子拆分生成的所有列对。

最佳答案

也许这会产生您正在寻找的结果:

df <- read.table(text="Group   var1    var2    var3    var4    var5
1           3   5   7   3   7
1           3   7   5   9   6
1           5   2   6   7   6
1           9   5   7   0   8
1           2   4   5   7   8
1           2   3   1   6   4
2           4   2   7   6   5
2           0   8   3   7   5
2           1   2   3   5   9
2           1   5   3   8   0
2           2   6   9   0   7
2           3   6   7   8   8
2           10  6   3   8   0", header = TRUE)


t(sapply(df[-1], function(x) 
     unlist(t.test(x~df$Group)[c("estimate","p.value","statistic","conf.int")])))

结果:
     estimate.mean in group 1 estimate.mean in group 2   p.value statistic.t conf.int1 conf.int2
var1                 4.000000                 3.000000 0.5635410   0.5955919 -2.696975  4.696975
var2                 4.333333                 5.000000 0.5592911  -0.6022411 -3.104788  1.771454
var3                 5.166667                 5.000000 0.9028444   0.1249164 -2.770103  3.103436
var4                 5.333333                 6.000000 0.7067827  -0.3869530 -4.497927  3.164593
var5                 6.500000                 4.857143 0.3053172   1.0925986 -1.803808  5.089522

关于r - 对按因子拆分的数据帧中的许多列应用 t 检验,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13790611/

相关文章:

python - 如何重新索引 'multi - groupbyed' 数据帧?

r - 了解 plyr 的 ddply 函数

R 编程 : plyr how to count values from a column with ddply

c++ - Rstudio,配置: error: GDALAllRegister not found in libgdal

r - 将参数传递给 data.table 聚合函数

python - Pandas 在迭代行时不保存更改

r - plyr::ddply 错误消息:类(输出[[var]])<-类(值)中的错误:尝试在 NULL 上设置属性

按行用 0 替换矩阵范围

r - 在 R 中,你如何在调用函数中评估 ...?

python - 如何计算 pandas 股票开盘价的百分比变化