2015-03-21 3 views
1

При создании отчета по уценке R в Rstudio я хотел бы сделать мои таблицы немного понятными. Я изучил kable() и xtable(), но я не нашел то, что искал (или, возможно, не понял, что нашел). Вот пример таблицы, что я мог бы включать в себя:dplyr добавление метки в группу столбцов в таблице

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» (или еще лучше «Цилиндр») выше 4/6/8. В противном случае в сложных таблицах может быть неясно, что представляют собой эти значения.

В частности: Как добавить строку в начало этой таблицы, которая отображает «Цилиндр» над тремя последними столбцами?

Спасибо за помощь!

+0

Разделение строк и столбцов не поддерживается уценкой Pandoc, поэтому, вкратце: вы не можете сделать это без грязных хаков, например, в реализации CrossTable 'pander', например. 'pander (с (mtcars, descr :: CrossTable (шестерня, цил)))' - это обходной путь при прокрутке строк. Здесь вам нужен colspan. – daroczig

ответ

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| 
1

При использовании 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 
) 

Cylinders vs Gears

Для вывода PDF Hmisc::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, вы в невезения как насколько я могу видеть в этот момент.

Смежные вопросы