Группировка столбцов с DT-пакетом в R - PullRequest
1 голос
/ 01 апреля 2020

Есть ли способ сгруппировать столбцы в «основные» заголовки, используя пакет в (или даже форматируемый пакет в этом отношении)? Я создал пример того, что я пытался сделать, но, похоже, нигде не могу найти . Я создаю таблицу для веб-приложения, поэтому, возможно, мне придется настроить CSS, хотя я не уверен, что это возможно. Для ясности, заголовки Historical и Current - это то, что я хотел бы воспроизвести в моей .

Пример таблицы данных enter image description here

В целях примера, следующий df будет разделен на две группы в одном и том же фрейме данных с 1: 4, помеченным как Historical, и 5: 8, помеченным как Current.

df <- data.frame(1,2,3,4,5,6,7,8)

Большое вам спасибо.

1 Ответ

1 голос
/ 01 апреля 2020

Этого можно достичь, используя контейнер пользовательских таблиц (см. Здесь: https://rstudio.github.io/DT/) и некоторые JS (jQuery) для изменения стиля таблицы CSS.

# a custom table container
sketch = htmltools::withTags(table(
  class = 'display',
  thead(
# Define the grouping of your df
    tr(
      th(colspan = 4, 'Historical'),
      th(colspan = 4, 'Current')
    ),
# Repeat column names 8 times
    tr(
      lapply(paste0("Col ", 1:8), th)
    )
  )
))
# Using JS for adding CSS, i.e., coloring your heading
# Get the corresponding table header (th) from a table cell (td) and apply color to it
headjs <- "function(thead) {
  $(thead).closest('thead').find('th').eq(0).css('background-color', '#D9E1F2');
   $(thead).closest('thead').find('th').eq(1).css('background-color', '#8EA9DB');

}"

# Your data frame
df <- data.frame(1,2,3,4,5,6,7,8)

# Output DT with your custom header
datatable(df , container = sketch,  options = list(
  headerCallback = JS(headjs)
))

А на выходе:

enter image description here

...