在Rstudio中创建R降价报告时,我想让我的表格更容易理解。我已经研究过kable()和xtable(),但是我还没有找到我正在寻找的东西(或许我不知道我发现了什么)。这是我可能包含的示例表:
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|
在报告中,我希望包含列名称" Cyl" (或者更好的" Cylinder")在4/6/8之上。否则,在复杂表中,可能不清楚这些值代表什么。
具体来说:如何在此表的开头添加一行,以显示" Cylinder"在最后三列之上?
感谢您的帮助!
答案 0 :(得分: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输出,那么就我现在看来你运气不好。
答案 1 :(得分:0)
这并不是我想要的,但我决定只更改每个列的名称。这是基本的,但对于将来看这里的任何人来说,我的代码现在看起来像这样:
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()
结果表在控制台中如下所示:
| gear| 4 Cylinder| 6 Cylinder| 8 Cylinder|
|----:|----------:|----------:|----------:|
| 3| 1| 2| 12|
| 4| 8| 4| NA|
| 5| 2| 1| 2|