【问题标题】:R: Perform a T-Test across all matching rows of two different dataframesR:对两个不同数据帧的所有匹配行执行 T 检验
【发布时间】:2015-01-17 17:20:53
【问题描述】:

因此,在 excel 中,有一个公式 ttest 可以跨给定行执行 ttest(使用两个不同的数组,例如 =TTEST(A1:L1, M1:Z1,2,2) - 在这种情况下,两个尾,类型 2)。它为该行返回一个 pvalue。

我想知道在 R 中是否有类似的方法可以做到这一点,其中我有两个长度相等的数据帧(df1 和 df2)代表两个数组,新向量返回 t 测试的结果每一行。

因此,T 检验会将 df1 中的所有 row1 值作为第一个数组,并将 df2 中的所有 row1 值作为第二个数组,在新的 ttest 向量中返回该行的 pvalue,然后继续向下最后一行。

感谢您的热心帮助。

注意:我不一定知道每个数据框中的列数,每次运行时它们都会有所不同。这就是我想要自动化它的原因。

【问题讨论】:

  • 所以,作为后续,我尝试使用以下循环来纠正这种情况: p

标签: arrays r statistics


【解决方案1】:

最简单的方法是使用for 循环,如下所示:

p <- numeric(0)
for(i in seq(nrow(df1)))
    pvalues[i] <- t.test(df1[i],df2[i])$p.value

应该警告您,从 data.frame 中取出行通常会导致一些令人困惑的类型强制,因此我会先将 data.frames 转换为矩阵并测试该矩阵是否为数字,如

mx1 <- as.matrix(df1)
stopifnot(inherits(mx1,c('integer','numeric')))

for 循环中用 mx1 代替 df1。

【讨论】:

  • 嗨@Jthorpe,我收到以下错误:[.data.frame(df1, i) 中的错误:选择了未定义的列。你知道如何解决这个问题吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-11-08
相关资源
最近更新 更多