r语言 - 如何对表进行子集并使用值进行统计计算



我有一个数据框,看起来像这样:

表1

 SNo. C1   C2 C3  C4 C5  
 1. A*01   17 116 78 141
 2. A*02   30 1   65 256
 3. A*03   --------------
 4. A*04   --------------
 5.----------------------

对于每一行,我想使用需要 2x2 表的函数计算优势比和 95% 置信区间fisher.test()。当我手动提供数字进行测试时,它工作正常:fisher.test(matrix(c(17, 116,78, 141), ncol = 2, byrow = TRUE))但是当我这样做时fisher.test(matrix(c(table1[1,2:5]), ncol=2, byrow=T))它会给我这个错误:

"x"的所有条目必须是非负数和有限的

请建议我做错了什么

您没有将正确的输入传递给函数。当您这样做时,它可以正常工作。例如:

dat <- read.table(text="SNo. C1   C2 C3  C4 C5  
1. A*01   17 116 78 141
2. A*02   30 1   65 256",header=TRUE)
apply(
  dat[-(1:2)],
  1,
  function(x) fisher.test(matrix(x,nrow=2,byrow=TRUE)) 
)
#[[1]]
#
#        Fisher's Exact Test for Count Data
#...
#odds ratio 
# 0.2658521 
#
#
#[[2]]
#
#        Fisher's Exact Test for Count Data
#...
#odds ratio 
#  116.4649 

最新更新