将列联表从R导出到excel的最有效方法

时间:2016-06-16 18:25:08

标签: r excel export

我在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")

3 个答案:

答案 0 :(得分:2)

  

我在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中得到一个很好的表格。 exported table

侧点

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

sample flex table with options 来源: ReporteRs examples

答案 1 :(得分:1)

我一直无法找到一个从R输出格式繁多的列联表到Excel的程序包,因此一直在处理这样做的程序包:

Github回购是here和文档here

您可以使用以下方法安装它: df <- data.frame(out2) wb <- xltabr::auto_df_to_wb(df, left_header_colnames = "Outcome") openxlsx::openXL(wb)

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

{{1}}

哪个会在Excel中产生以下输出:

enter image description here

答案 2 :(得分:0)

如何简单地

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