有没有办法在使用R的学术文章中导出表格?

时间:2018-03-30 03:42:50

标签: r markdown r-markdown knitr bookdown

enter image description here

我有一个观察数据框,我想以像图片一样的格式将数据框导出到docx文件。我可以做到这一点但是很难。还有更方便的方法吗?以下是我知道可能有用的软件包:knitr printr bookdown。 假设我有一个像这样的数据框mydata

Group CRP PCT
pos   1   7
pos   2   8
pos   3   9
neg   4   10
neg   5   11
neg   6   12

我希望output像这样:

Group   CRP     PCT
pos     2(1~3)  8(7~9)
neg     5(4~6)  11(10~12)
p-value 0.00    0.00

我认为问题是:

  1. 鉴于上面的mydata,如何将其轻松转换为output
  2. 获得output后,如何将其导出到docx,与图片中的格式相同?

3 个答案:

答案 0 :(得分:3)

您可以使用dplyr转换数据,tableHTML创建一个类似问题的表格。

library(dplyr)

此功能用于按CRP汇总PCTGROUP

fun <- function(x) {
  paste0(x[! x %in% c(min(x), max(x)) ], 
         "(",
         min(x),
         "~",
         max(x),
         ")")
}

在按summarise_all()分组的mydata上的Group中使用该功能,并按Group对数据进行排序:

output <- mydata %>% 
  group_by(Group) %>% 
  summarise_all(.funs = fun) %>% 
  arrange(desc(Group))

然后在tableHTML上使用output创建科学表格:

library(tableHTML)
output %>% 
  tableHTML(rownames = FALSE,
            widths = rep(100, 3), 
            theme = 'scientific')

结果如下:

tableHTML

答案 1 :(得分:2)

我一直在使用flextable将漂亮的表格导出到Word,经过几个小时的痛苦和痛苦之后,我现在真的很高兴。这是我的R Markdown代码块和从中提取数据的CSV文件。您可以从https://drive.google.com/open?id=1V1yMrz9cWX0YJwoUEJG8Nk01JPcLG-ZW

下载此示例中使用的CSV
```{r echo=FALSE, message=FALSE, warning=FALSE}
library(magrittr)
library(dplyr)
library(flextable)
peoso <- read.csv("PEO-SO.csv",header=TRUE)
peoso %>% select(-grpindex) %>% 
     regulartable(col_keys=c("Type","col1","Number","col2", "Description")) %>% 
     merge_v(~Type) %>% autofit() %>% width(j=~Description, width=5) %>% empty_blanks()
```

width=部分可让您控制列的宽度,因此可以避免在Word中将表格呈现在页面外。 col1col2值作为“虚拟”列在表中的列之间创建空格。这是最终表格的一部分看起来像IN WORD所以你可以看到它渲染得有多好:

enter image description here

答案 2 :(得分:1)

我不确定你的意思是什么&#34;艰难的方式&#34;但是上面生成的代码看起来像是用LaTEX / sweave创建的,或者是带有Rmarkdown的pdf。 Rmarkdown有&#34; Knit as&#34;选项。将其从pdf更改为word,它将在word文档中输出您的表。再一次,它看起来不那么好,因为它是用LaTEX创建的(直接或在程序的后台)。我建议查看LaTEX以更好地了解如何使用该软件编辑文档。