#r #row #grouping #flextable
#r #строка #группировка #гибкий
Вопрос:
library(tidyverse)
library(flextable)
MWE
tib <- tibble(var_group = c("a", "a", "b", "c", "c", "c"),
var = 1:6)
tib <- as_grouped_data(x = tib, groups = c("var_group"), columns = NULL)
as_flextable(tib)
Как я могу удалить var_group:
часть сгруппированных заголовков, чтобы у меня остались a, b и c?
Это то, что я хотел бы видеть (не беспокоясь о hlines — важен текст):
Не это:
Комментарии:
1. Когда я пытаюсь это сделать, я получаю следующее сообщение об ошибке: «Ошибка в get_rows_id(x[[часть]], i): неверный выбор строки: длина (i) [0] != nrow(dataset) [9]»
2. Функция является
as_grouped_data
. Я использую последнюю версию flextable от cran: v0.5.13. Вы правы. Ранее я думал, что это функция tidyverse. извините
4. Вы можете попробовать
flextable(tib) %>% set_header_labels(var_group = "")
. Не удалось удалить строки заголовка5. Я получаю эту ошибку: «Ошибка в [<-
(
* tmp *`, i, j, значение = value): нижний индекс выходит за рамки». Меня не беспокоит отредактированный вопрос hlines, чтобы прояснить это.
Ответ №1:
Это также работает:
library(tidyverse)
library(flextable)
tib <- tibble(var_group = c("a", "a", "b", "c", "c", "c"),
var = 1:6)
tib <- as_grouped_data(x = tib, groups = c("var_group"), columns = NULL)
as_flextable(tib, hide_grouplabel = TRUE)
Ответ №2:
Вам нужно использовать flextable::compose
, чтобы иметь возможность перезаписывать значения по умолчанию. Важно посмотреть на данные, созданные as_grouped_data, которые будут использоваться. В группы были добавлены фиктивные строки, и мы можем использовать этот столбец.
library(tidyverse)
library(flextable)
#>
#> Attachement du package : 'flextable'
#> The following object is masked from 'package:purrr':
#>
#> compose
tib <- tibble(var_group = c("a", "a", "b", "c", "c", "c"),
var = 1:6)
tib <- as_grouped_data(x = tib, groups = c("var_group"), columns = NULL)
tib
#> var_group var
#> 1 a NA
#> 4 <NA> 1
#> 5 <NA> 2
#> 2 b NA
#> 6 <NA> 3
#> 3 c NA
#> 7 <NA> 4
#> 8 <NA> 5
#> 9 <NA> 6
tib %>%
as_flextable( ) %>%
flextable::compose(
i = ~ !is.na(var_group), # when var_group not NA
j = "var", # on column "var"
# create a paragraph containing a chunk containing value of `var_group`
value = as_paragraph(as_chunk(var_group))) %>%
hline(i = ~ !is.na(var_group), border = officer::fp_border() ) %>%
autofit()