【问题标题】:Adding title to the table with flextable and officer library使用 flextable 和官员库向表格添加标题
【发布时间】:2020-03-03 12:20:05
【问题描述】:

我正在准备一个函数来从分类变量创建表格输出,该变量可以使用 flextable 和官员库导出到 word。

需要的库:

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")

有没有办法在这个函数的顶部添加标题?

【问题讨论】:

  • 您使用的是 Word 输出(带有 read_docx)吗?
  • 是的,我正在使用 word 模板导出带有 read_docx 的表格
  • 好的,对不起,它写在帖子的顶部。我读得太快了。我想你在寻找一个标题,这很快就会成为一个功能。同时,您可以使用officer::body_add_par 或officer::body_add_fpar 复制标题。但这不能是 flextable 的一部分,您将需要两次调用,一个用于添加 flextable,另一个用于添加标题
  • 谢谢,我正在尝试,但无法打印标题

标签: r flextable officer


【解决方案1】:

您可以尝试使用名为 {rrtable} 的新软件包。它允许您在添加附加行作为标题的同时输出 flextable 对象。请查看函数add_text()

【讨论】:

    猜你喜欢
    • 2023-03-24
    • 2017-04-16
    • 1970-01-01
    • 2021-08-24
    • 2021-08-31
    • 2022-01-18
    • 2021-05-21
    • 1970-01-01
    • 2021-12-18
    相关资源
    最近更新 更多