如何从R中的测试中获得测试统计数据,例如当使用所选列应用于整个数据框时,'fisher.test()' . 我知道如何手动完成,例如抓取p.value:
fisher.test(matrix(c(9,0,1,1),ncol=2))$p.value
得到:
[1] 0.1818182
我需要在一个数据框上得到p.value并从 fisher.test()
估计,并且看着this SE question我受到启发来制作这样的函数:
fisher <- function(a,b,c,d){
data <- matrix(c(a,b,c,d),ncol=2)
c(p = fisher.test(data)$p.value,
OR = fisher.test(data)$estimate)
}
这也像:
fisher(9,0,1,1)[[1]]
并给我与上述相同 . 但是,如何将其用于data.frame,例如使用mutate添加名为'p'的列?
require(plyr)
require(dplyr)
data <-
data.frame(v1=c(9,10,2,2),
v2=c(0,8,0,0),
v3=c(1,1,0,9),
v4=c(1,2,3,4))
data %>%
mutate(p=fisher(v1,v2,v3,v4)[[1]])
不起作用(它为所有行提供相同的值) . 我是否需要以某种方式'应用'或者可以用 dplyr::do
完成?
1 回答
像这样使用'hrwise()':
并且 - 从上面的数据 - 我们得到: