【问题标题】:most efficient way to export contingency table from R to excel将列联表从 R 导出到 excel 的最有效方法
【发布时间】:2016-10-18 09:57:29
【问题描述】:

我正在 R 中创建一些列联表/交叉表,我想将其移至 Excel 以在 Word 文档中使用。我在几个问题中找到了关于如何写到 excel 的讨论-How to export multivariate forecast results from R to excel Export data from R to excel。但是列联表的格式(使用基本 R 或像 descr 或 gmodels 这样的包)似乎不能很好地转换为 Excel。

我想出了自己的解决方案,可以产生我想要的,但我想知道是否有更有效的方法,例如我忽略的一个包。

library(xlsx)
test.data <- as.data.frame(matrix(sample.int(2,size = 10*2, TRUE), nrow = 10, ncol = 2))
out1 <- table(test.data$V1, test.data$V2)
out.p <- prop.table(out1,2)
out.d <- as.data.frame.matrix(out1)
out.pd <- round(as.data.frame.matrix(out.p),2)
colnames(out.d) <- c("No", "Yes")
colnames(out.pd) <- c("No", "Yes")
out.d1 <- paste(out.d$No, " (",out.pd$No,")",sep="")
out.d2 <- paste(out.d$Yes," (",out.pd$Yes,")", sep="")
out2 <- cbind(out.d1,out.d2)
toadd.r <- c("No","Yes")
out2 <- cbind(toadd.r,out2)
sig <- unlist(summary(table(test.data$V1,test.data$V2)))
sig <- rep(round(sig[6],2),nrow(out2))
out2 <- cbind(out2, sig)
colnames(out2) <- c("Outcome","No","Yes","sig")
write.xlsx(out2, file ="Output.xlsx", sheetName = "Test1")

【问题讨论】:

  • 询问“做 X 的最有效方法”的问题通常对于 SO 来说太宽泛了。除非您提供更具体的定义,否则此问题可能会就此结束。

标签: r excel export


【解决方案1】:

我正在 R 中创建一些我想要的列联表/交叉表 移至 Excel 以在 Word 文档中使用。

如果您的最终目的是导出到 MS Word,您应该考虑使用 ReporteRs 包。

示例

关于您的数据示例,您可以使用下面的代码直接在 MS Word 中创建表格。

library(ReporteRs)
mydoc <- docx()
mydoc <- addFlexTable(mydoc, flextable = FlexTable(out2))
writeDoc(mydoc, file = "example.docx")

结果

您将在 MS Word 中获得一张漂亮的表格。


侧点

FlexTable 对象为您提供了很多选项来调整格式和演示。

来源: ReporteRs examples

【讨论】:

  • 也许提到这也可以在 Rmarkdown 文件上使用library(pander) 来完成?在 R 块中使用 pander(out2) 也可用于直接导出到 Word 文档。
  • @Twitch_City 与 MS Office 的集成,可以通过多种方式实现。 RMarkdown 非常好,我建议使用 ReporteRs 的解决方案,因为在我看来,这反映了 OP 的愿望:1)导出到 MS Word,2)对格式有一些控制等。使用 RMarkdown 或任何其他解决方案都没有问题。
  • 这很有帮助,谢谢。我会研究 Rmarkdown 和 reporteRs。
【解决方案2】:

我一直无法找到从 R 将格式丰富的列联表输出到 Excel 的包,因此我一直在研究能够做到这一点的包:

Github 存储库是 here 和文档 here

您可以使用以下方式安装它: devtools::install_github("moj-analytical-services/xltabr")

在您的用例中,您需要运行以下代码:

df  <- data.frame(out2)
wb <- xltabr::auto_df_to_wb(df, left_header_colnames = "Outcome")
openxlsx::openXL(wb)

这将在 Excel 中产生以下输出:

【讨论】:

    【解决方案3】:

    简单点怎么样

    write.csv(out2, "myContingencyTable.csv") 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-15
      • 2014-05-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多