表格输出 - 为PDF表格分组列标题

时间:2017-03-31 14:39:30

标签: r dataframe formatting columnheader

我想知道在输出汇总表时是否有任何方法可以有效地对列标题进行分组。我意识到这是我想要的一个可怕的解释所以这是一个例子。

假设我有一个包含5列的摘要数据框:projectName,currMonthCost,currMonthRev,prevMonthCost,prevMonthRev。我希望列标题有2个级别,最终输出按curr / prev对列进行分组 - 类似于:

               ||     Current    ||    Previous    ||  
  projectName  ||  Cost  |  Rev  ||  Cost  |  Rev  ||
_______________||________|_______||________|_______||
               ||        |       ||        |       ||
       x       ||    x   |   x   ||    x   |   x   ||  
       y       ||    y   |   y   ||    y   |   y   ||

为穷人尝试制作餐桌而道歉,我是新来的。但希望你明白了。

是否有可以处理的包?我已经在使用formattable但在那里找不到任何明显的东西。如果没有现成的东西,我很高兴它成为一个完整的拙劣 - 它只是导出为PDF的摘要数字。我只是想避免在PDF格式之前导出到excel以合并单元格。

提前致谢。 詹姆斯

1 个答案:

答案 0 :(得分:1)

您需要DT库。它是显示数据帧的强大工具。在您的情况下,您可以使用container参数自定义表格标题:

library(DT)

df <- data.frame(projectName = c("x", "y"), currMonthCost = c("x", "y"), currMonthRev = c("x", "y"), prevMonthCost = c("x", "y"), prevMonthRev = c("x", "y"))

df
#  projectName currMonthCost currMonthRev prevMonthCost prevMonthRev
#1           x             x            x             x            x
#2           y             y            y             y            y

sketch = htmltools::withTags(table(
      class = 'display',
      thead(
          tr(
              th(rowspan = 2, 'projectName'),
              th(colspan = 2, 'Current'),
              th(colspan = 2, 'Previous')
          ),
          tr(
              lapply(rep(c('Cost', 'Rev'), 2), th)
          )
      )
  ))

datatable(df, container = sketch, rownames = F)

enter image description here