dplyr 将标签添加到 table 中的一组列

dplyr adding a label to a group of columns in a table

在 Rstudio 中创建 R markdown 报告时,我想让我的 table 更容易理解一些。我查看了 kable() 和 xtable(),但我没有找到我要找的东西(或者可能不明白我找到了什么)。这是我可能包含的示例 table:

library(dplyr)
library(tidyr)
library(knitr)

mtcars %>% 
 group_by(gear,cyl) %>%
 summarize(count = n()) %>%
 spread(cyl,count) %>%
 kable()

这是(控制台)结果:

| gear|  4|  6|  8|
|----:|--:|--:|--:|
|    3|  1|  2| 12|
|    4|  8|  4| NA|
|    5|  2|  1|  2|

在报告中,我想在 4/6/8 上方包含列名 "Cyl"(或更好 "Cylinder")。否则,在复杂的 table 中,可能不清楚这些值代表什么。

具体来说:如何在 table 的开头添加一行,在最后三列上方显示 "Cylinder"?

感谢您的帮助!

这不是我要找的东西,但我决定只更改每个列的名称。这是基本的,但对于以后看这里的人来说,我的代码现在看起来像这样:

library(dplyr)
library(tidyr)
library(knitr)

test <- mtcars %>% 
 group_by(gear,cyl) %>% 
 summarize(count = n()) %>%
 spread(cyl,count)

colnames(test)[2:4] <- paste(c(4,6,8),"Cylinder",sep=" ")

test %>% kable()

结果 table 在控制台中看起来像这样:

| gear| 4 Cylinder| 6 Cylinder| 8 Cylinder|
|----:|----------:|----------:|----------:|
|    3|          1|          2|         12|
|    4|          8|          4|         NA|
|    5|          2|          1|          2|

当使用 HTML 作为输出时,htmlTable 包提供列分组:

library(dplyr)
library(tidyr)
library(htmlTable)

test <- mtcars %>% 
 group_by(gear,cyl) %>% 
 summarize(count = n()) %>%
 spread(cyl,count)

htmlTable(
    test[,-1], # data.frame
    cgroup = c("Cylinders"), # Column group labels
    n.cgroup = c(3), # Number of columns per group
    rnames = test[[1]], # Row labels
    rowlabel = "Gears" # Column header for row labels
)

对于 PDF 输出 Hmisc::latex 提供了类似的语法(不幸的是,由于我当前正在使用的机器上缺少 LaTeX,我无法对其进行测试):

library(Hmisc)

latex(
    test[,-1], # data.frame
    cgroup = c("Cylinders"), # Column group labels
    n.cgroup = c(3), # Number of columns per group
    rowname = test[[1]], # Row labels
    rowlabel = "Gears" # Column header for row labels
)

如果你想要 MS Word 输出,据我目前所知,你运气不好。