有什么方法可以使用 R 导出学术文章中的表格吗?

Is there any way to export tables in a academic article using R?

我有一个观察的数据框,我想把这个数据框导出到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

我不确定你所说的 "the hard way" 是什么意思,但你上面生成的代码看起来像是用 LaTEX/sweave 创建的,或者是用 Rmarkdown 创建的 pdf。 Rmarkdown 有一个 "Knit as" 选项。将此从 pdf 更改为 word,它将在 word 文档中输出您的 table。同样,它看起来不太像,因为它是用 LaTEX 创建的(直接创建或在程序后台创建)。我建议查看 LaTEX 以更好地了解如何使用该软件编辑文档。

您可以使用 dplyr 转换您的数据,并使用 tableHTML 创建一个 table 就像您问题中的那个。

library(dplyr)

这个函数是用来总结CRPPCTGROUP

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

mydata 上使用 summarise_all() 中的函数,按 Group 分组,并按 Group:

对数据进行排序
output <- mydata %>% 
  group_by(Group) %>% 
  summarise_all(.funs = fun) %>% 
  arrange(desc(Group))

然后在output上使用tableHTML创建一个科学的table:

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

结果如下所示:

我一直在使用 flextable 将漂亮的 table 导出到 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= 部分可让您控制列的宽度,这样您就可以避免 table 在 Word 中呈现在页面之外。 col1col2 值作为 "dummy" 列存在,以在 table 的列之间创建 space。这是最终 table 的一部分在 WORD 中的样子,因此您可以看到它呈现的效果如何: