Я хочу создать таблицу DT
с тройными вложенными заголовками, но я не получаю правильное выравнивание.С двойным вложением все очень просто, см. Код ниже:
library(DT)
library(dplyr)
### yearly breakdown
df_year <- data.frame(
group = LETTERS[1:6],
year = rep(2017, 6),
A_2017 = rnorm(6),
B_2017 = rnorm(6)
)
sketch_year = htmltools::withTags(table(class = 'display',
thead(tr(
th(rowspan = 2, 'Group'),
lapply(unique(df_year$year),
th, colspan = 2)
),
tr(
lapply(rep(c(
'Alpha', 'Beta'
), length(unique(df_year$year))), th)
))))
DT::datatable(select(df_year, -year),
container = sketch_year,
rownames = FALSE,
fillContainer = TRUE)
Однако, если я попытаюсь применить аналогичные принципы к третьему ряду, он будет смещен:
## quarterly breakdown
df_qrt <- data.frame(
group = LETTERS[1:6],
year = rep(2017, 6),
Q1_2017A = rnorm(6),
Q1_2017B = rnorm(6),
Q2_2017A = rnorm(6),
Q2_2017B = rnorm(6),
Q3_2017A = rnorm(6),
Q3_2017B = rnorm(6),
Q4_2017A = rnorm(6),
Q4_2017B = rnorm(6)
)
sketch_qrt = htmltools::withTags(
table(class = 'display',
thead(tr(
th(rowspan = 2, 'Group'),
lapply(unique(df_qrt$year),
th, colspan = 8)
),
tr(
lapply(paste0('Q', 1:4),
th, colspan = 2)
),
tr(lapply(rep(
c('Alpha', 'Beta'), 4
), th))
))
)
DT::datatable(select(df_qrt, -year),
container = sketch_qrt,
rownames = FALSE,
fillContainer = TRUE)
Как я могу сделать это правильно?Спасибо.