我对R的熟练程度基本上是基本的,所以如果我在软件上无法提出要求,请耐心等待。
我有以下数据:
x1 x2 x3 y1 y2 y3
5 4 3 9 8 7
0 1 9 4 2 1
2 1 2 3 2 2
3 3 1 2 3 4
这样可以持续大约27,000行。 您可以将这些视为临床试验中的反应,其中x1,x2,x3代表患者的x组,y1,y2,y3代表y组患者。 有人问我是否可以看出组x和组y之间的平均差异对于~27,000行中的每一行(可能是使用t检验)是否具有统计显着性,并且他们是否可以将p值显示为单独的列。所以它看起来像这样:
x1 x2 x3 y1 y2 y3 p-value
5 4 3 9 8 7 0.7780
0 1 9 4 2 1 0.2404
2 1 2 3 2 2 0.2311
3 3 1 2 3 4 0.1113
对我来说这样做似乎是不合理的,但是我想知道我是否能基本上执行~27,000 t.tests(在x1 + x2 + x3和y1 + y2 + y3之间)并且有一列显示每个测试的p值作为相邻列。或者即使有另一个更好的方法来衡量重要性而不使用t.test。谢谢。
答案 0 :(得分:0)
假设这些组的长度相等:
getPValue <- function(row)
{
l <- length(row)/2
x <- row[1:l]
y <- row[-(1:l)]
fit <- t.test(x,y)
return(fit$p.value)
}
data <- cbind(data,apply(data,1,getPValue))
编辑:
如果您还要附加每行测试的绝对平均差异,您可以使用:
getPValue <- function(row)
{
l <- length(row)/2
x <- row[1:l]
y <- row[-(1:l)]
fit <- t.test(x,y)
return(fit$p.value)
}
getMeanDiff <- function(row)
{
l <- length(row)/2
x <- row[1:l]
y <- row[-(1:l)]
return(abs(mean(x)-mean(y)))
}
diff <- apply(data,1,getMeanDiff)
p.value <-apply(data,1,getPValue)
data <- data.frame(cbind(data,diff,p.value))