r-使用kable将列与具有相同名称的子列分组

时间:2019-10-25 20:12:47

标签: r r-markdown bookdown kable kableextra

我正在尝试使用kablekableextra创建一个表,该表具有不同的分组标题,但子标题中的列名称相同

例如,如果您查看Create Awesome LaTeX Table with knitr::kable andkableExtra的“分组的列/标题”部分(第14页),则将其分组,但是子标题名称是不同的:

library(knitr)
library(kableExtra)
dt <- mtcars[1:5, 1:6]

kable(dt, "latex", booktabs = T) %>%
kable_styling() %>%
add_header_above(c(" " = 1, "Group 1" = 2, "Group 2" = 2, "Group 3" = 2))

我要做的是将汽车分组(例如仅使用两辆汽车):

Mazda RX4 | Datsun 710
----------------------
mpg | cyl | mpg | cyl
----------------------
21.0|   6 | 21.4|   6

或作为另一个示例:

Group 1 | Group 2
------------------
x  |  y | x  |  y
------------------
a  |  1 | b  |  2
c  |  3 | d  |  4

这可能吗?

1 个答案:

答案 0 :(得分:0)

我假设您正在尝试通过代码在pdf / Latex中创建表格。我有同样的问题。希望这会有所帮助:

library(dplyr)
library(knitr)
library(kableExtra)

df <- tibble('mpg_Mazda_RX4' = 21,
             'cyl_Mazda_RX4' = 6,
             'mpg_Datsun_710' = 21.4,
             'cyl_Datsun_710' = 6)
kable(df,
      "latex",
      booktabs = T,
      align = c("rrrr"),
      col.names = c("mpg","cyl","mpg","cyl")) %>%
  kable_styling(latex_options = c("striped"),
                position = "left") %>%
  add_header_above(c("Mazda RX4" = 2, "Datsun 710" = 2))

您必须将列名直接传递给kable(不更改数据框列名)。