如何使用一些最小格式将数据框导出到latex?

时间:2017-08-29 01:05:22

标签: r latex xtable stargazer

考虑这个简单的例子

library(dplyr)
dataframe <- data_frame(mytext1 = c('HELLO',
                                   'WORLD'),
                        mytext2 = c('HELLO',
                                   'AGAIN'),
                        value1 = c(1,2), 
                        value2 = c(1,2))

# A tibble: 2 x 4
  mytext1 mytext2 value1 value2
    <chr>   <chr>  <dbl>  <dbl>
1   HELLO   HELLO      1      1
2   WORLD   AGAIN      2      2

我想将这个数据框导出到一个乳胶表,但有一些(但很重要的)调整。

特别是,我希望在latex输出中添加一个用于分隔文本变量的超列和另一个用于分隔数值变量的超列。也就是说,在此图片中matcom的精神:

enter image description here

我尝试了R包xtabletables,但我无法实现某些目标(可能是因为它们创建了摘要统计表)。我在这里错过了什么吗?

谢谢!

1 个答案:

答案 0 :(得分:4)

您可以使用kable包中的knitrkableExtra包来执行此操作:

```{r table, results='asis'}
library(knitr)
library(kableExtra)
library(magrittr)

dataframe <- data.frame(mytext1 = c('HELLO',
                                   'WORLD'),
                        mytext2 = c('HELLO',
                                   'AGAIN'),
                        value1 = c(1,2), 
                        value2 = c(1,2))

dataframe %>%
    kable(format = 'latex', booktabs = TRUE) %>%
    add_header_above(header = c("Text" = 2, "Values" = 2))
``` 

在这里,我已经显示了RMarkdown块中包含的代码,其中在编织为PDF时会自动包含该表,但代码也应该在RMarkdown之外自行运行。

单独运行代码,您将获得表的Latex代码作为输出:

\begin{tabular}{llrr}
\toprule
\multicolumn{2}{c}{Text} & \multicolumn{2}{c}{Values} \\
\cmidrule(l{2pt}r{2pt}){1-2} \cmidrule(l{2pt}r{2pt}){3-4}
mytext1 & mytext2 & value1 & value2\\
\midrule
HELLO & HELLO & 1 & 1\\
WORLD & AGAIN & 2 & 2\\
\bottomrule
\end{tabular}