Добавление заголовка в таблицу с помощью флештаба и офицерской библиотеки

Я готовлю функцию для создания вывода таблицы из категориальной переменной, которую можно экспортировать в слово с помощью библиотеки flextable и Officer.

необходимы библиотеки:

library(dplyr)
library(officer)
library(flextable)

Функция:

tab_std<-function(data, var, Name_of_variable, footer, Title) { 
  data <- data[!is.na(data[[var]]), ]
  T1 <- as.data.frame(table(data[[var]]))
  all <- sum(T1[, 2])
  T1 <- T1 %>% mutate(
    !!Name_of_variable := as.character(Var1),
    "Percent" = roundUp(Freq * 100 / all),
    "N" = as.numeric(Freq)
  ) %>%
    select(!!Name_of_variable, "Percent", "N")
  T1[ ,2]<-sapply(T1[,2], function(x) ifelse(x=="--","--",paste0(mask_m(x,all),"%")))

  T1%>% flextable()%>% add_header_lines(Title)%>% add_footer_lines(footer)
}

В этой функции используются следующие функции:

masking_criteria<-c(3,4,5)

mask_m<-function(x,N){
  x= ifelse(N<masking_criteria[1],"--",x)
}

С помощью этой функции я добавляю заголовок в таблицу с помощью функции add_header_lines (), но при этом заголовок добавляется как часть таблицы. Я хочу, чтобы заголовок отображался в виде текста в верхней части таблицы, а не в строке таблицы. Например:

test<-data.frame(gender=c("M","M","F",NA),Names=c("A","B","C","D"),Amount=c(3,4,2,5))
tab_std(test, "gender","Gender","This is the footer","This is my Title")

Есть ли способ добавить заголовок вверху в этой функции?


person Sandhya Ghildiyal    schedule 03.03.2020    source источник
comment
Вы используете вывод Word (с read_docx)?   -  person David Gohel    schedule 04.03.2020
comment
Да, я использую шаблон Word для экспорта таблиц с read_docx   -  person Sandhya Ghildiyal    schedule 06.03.2020
comment
Окей, извините, это было написано вверху поста. Я прочитал это слишком быстро. Думаю, вам нужна подпись, скоро это будет функция. Между тем, вы можете воспроизвести подпись с помощью Officer :: body_add_par или Officer :: body_add_fpar. Но это не может быть частью Flextable, вам понадобятся два вызова: один для добавления Flextable, а другой для добавления заголовка.   -  person David Gohel    schedule 06.03.2020
comment
Спасибо, я пытаюсь это сделать, но не могу распечатать заголовок   -  person Sandhya Ghildiyal    schedule 06.03.2020


Ответы (1)


Вы можете попробовать использовать новый пакет под названием {rrtable}. Это позволяет вам выводить изменяемый объект, добавляя дополнительную строку в качестве заголовка. См. Функцию add_text().

person Angel Lu    schedule 03.04.2020