我有一个观察数据框,我想以像图片一样的格式将数据框导出到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
我认为问题是:
mydata
,如何将其轻松转换为output
?output
后,如何将其导出到docx
,与图片中的格式相同?答案 0 :(得分:3)
您可以使用dplyr
转换数据,tableHTML
创建一个类似问题的表格。
library(dplyr)
此功能用于按CRP
汇总PCT
和GROUP
。
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')
结果如下:
答案 1 :(得分:2)
我一直在使用flextable
将漂亮的表格导出到Word,经过几个小时的痛苦和痛苦之后,我现在真的很高兴。这是我的R Markdown代码块和从中提取数据的CSV文件。您可以从https://drive.google.com/open?id=1V1yMrz9cWX0YJwoUEJG8Nk01JPcLG-ZW
```{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中将表格呈现在页面外。 col1
和col2
值作为“虚拟”列在表中的列之间创建空格。这是最终表格的一部分看起来像IN WORD所以你可以看到它渲染得有多好:
答案 2 :(得分:1)
我不确定你的意思是什么&#34;艰难的方式&#34;但是上面生成的代码看起来像是用LaTEX / sweave创建的,或者是带有Rmarkdown的pdf。 Rmarkdown有&#34; Knit as&#34;选项。将其从pdf更改为word,它将在word文档中输出您的表。再一次,它看起来不那么好,因为它是用LaTEX创建的(直接或在程序的后台)。我建议查看LaTEX以更好地了解如何使用该软件编辑文档。