kin*_*182 2 r contingency dataframe
我有一个简单的问题.如何将数据帧转换为Fisher精确测试的列联表?
我有data
大约19000行:
head(data)
R_T1 R_T2 NR_T1 NR_T2
GMNN 14 60 70 157
GORASP2 7 67 39 188
TTC34 5 69 41 186
ZXDC 8 66 37 190
ASAH2 9 65 46 181
Run Code Online (Sandbox Code Playgroud)
我想将每一行转换为列联表来执行Fisher精确检验.例如,对于GMNN
:
R NR
T1 14 70
T2 60 157
fisher.test(GMNN, alternative="two.sided")
Fisher's Exact Test for Count Data
data: GMNN
p-value = 0.05273
alternative hypothesis: true odds ratio is not equal to 1
95 percent confidence interval:
0.2531445 1.0280271
sample estimates:
odds ratio
0.5243787
Run Code Online (Sandbox Code Playgroud)
由于我有19000行数据,我宁愿输出为:
R_T1 R_T2 NR_T1 NR_T2 p-value odds_ratio
GMNN 14 60 70 157 0.05273 0.5243787
GORASP2 7 67 39 188 0.1367 0.504643
TTC34 5 69 41 186 0.02422 0.3297116
ZXDC 8 66 37 190 0.3474 0.6233377
ASAH2 9 65 46 181 0.1648 0.5458072
Run Code Online (Sandbox Code Playgroud)
我迷失了如何做到这一点.有人可以帮忙吗?谢谢!
您可以将每行转换为列联表matrix
:
ft.res <- apply(data, 1, function(x){
t1 <- fisher.test(matrix(x, nrow = 2))
data.frame(p_value = t1$p.value, odds_ratio = t1$estimate)
})
cbind(data, do.call(rbind, ft.res))
# R_T1 R_T2 NR_T1 NR_T2 p_value odds_ratio
# GMNN 14 60 70 157 0.05273179 0.5243787
# GORASP2 7 67 39 188 0.13671487 0.5046430
# TTC34 5 69 41 186 0.02421765 0.3297116
# ZXDC 8 66 37 190 0.34744964 0.6233377
# ASAH2 9 65 46 181 0.16478480 0.5458072
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
2082 次 |
最近记录: |