【问题标题】:reshaping data frame into contingency table in R将数据框重塑为R中的列联表
【发布时间】:2014-10-10 22:44:49
【问题描述】:

我有一系列包含列联表的 excel 文件,如下所示:

         cns random
H3k       12  682
Not_H3k  343  30222

当我使用 'gdata' 库使用此命令读取此文件时,它会给出下表,不再是列联表:

random <- read.xls ("analysis.xlsx", sheet = 1, header = TRUE)

              X    cns   random
        1     UTR  12    682
        2 Not_UTR 343  30222

我想对这个数据进行 Fisher 测试,我如何将这个 data.frame 数据重塑为列联表格式?

【问题讨论】:

  • 如果你使用read.xls("analysis.xlsx", sheet = 1, header = TRUE, row.names = 1)会发生什么?

标签: r dataframe contingency


【解决方案1】:

read.xls 允许 read.table 的任何参数。具体来说,您可以指定包含行名称的列的编号。所以你可以使用

random <- read.xls ("analysis.xlsx", sheet = 1, header = TRUE, row.names=1)

继续测试

【讨论】:

  • Tnx,它起作用了,它的奇怪,row.names 没有在 ?gdata::read.xls 中作为参数提及!还有一种方法可以将已经加载到 R 中的数据框重塑为列联表吗?!
  • 查看 read.xls 的省略号参数的解释......有一个隐含的建议是查看 read.table 以了解其他可能的参数。
【解决方案2】:

您可以对您拥有的数据框使用 Fisher 测试:

random = structure(list(X = structure(c(2L, 1L), .Label = c("Not_UTR", 
"UTR"), class = "factor"), cns = c(12L, 343L), random = c(682L, 
30222L)), .Names = c("X", "cns", "random"), class = "data.frame", row.names = c(NA, 
-2L))

random
        X cns random
1     UTR  12    682
2 Not_UTR 343  30222

fisher.test(random[,-1])

        Fisher's Exact Test for Count Data

data:  ddf[, -1] 
p-value = 0.1433
alternative hypothesis: true odds ratio is not equal to 1 
95 percent confidence interval:
 0.7892877 2.7613943 
sample estimates:
odds ratio 
  1.550284 

【讨论】:

    猜你喜欢
    • 2021-08-14
    • 2015-09-30
    • 2016-12-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-05
    • 2012-09-19
    相关资源
    最近更新 更多