比例使用数据框的列中的值进行测试

时间:2013-12-18 00:45:59

标签: r testing

所以我坚持看似基本的东西,但无论如何。我有下面的数据帧(Dat.f),我需要在Posgain.vector和Neggain.vector上运行一个proportionions.test(Chi.squared)并提取P值 使用公式prop.test。

如果使用第一行作为示例手动完成,则结果为

 P<-prop.test(x=c(4,4), n=c(16,10)[2]

  Posgain.vector Freq Neggain.vector Freq.1 PosRef NegRef
1           A1BG    4           A1BG      4     16     10
2       A1BG-AS1    4       A1BG-AS1      4     16     10
3           A1CF    4           A1CF      1     16     10
4            A2M    1            A2M      1     16     10
5        A2M-AS1    1        A2M-AS1      1     16     10
6          A2ML1    1          A2ML1      1     16     10

问题是我无法弄清楚如何将此函数应用于每一行,因此它将该行的第二列和第四列粘贴到x中并应用n保持相同的公式。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:2)

非常类似@agstudy的方法,但提取p.value:

df = data.frame(Posgain.vector=c("A1BG", "A1BG-AS1", "A1CF", "A2M", "A2M-AS1", "A2ML1"),
                Freq = c(4, 4, 4, 1, 1, 1),
                Neggain.vector=c("A1BG", "A1BG-AS1", "A1CF", "A2M", "A2M-AS1", "A2ML1"),
                Freq.1 = c(4, 4, 1, 1, 1, 1),
                PosRef = rep(16, 6),
                NegRef = rep(10, 6))
apply(df[, c(2,4)], 1, function(row) prop.test(x=c(row[1], row[2]), n=c(16, 10))$p.value)

# [1] 0.7117401 0.7117401 0.6652053 1.0000000 1.0000000 1.0000000