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 输出,据我目前所知,你运气不好。
在 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 输出,据我目前所知,你运气不好。