【发布时间】: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,另一个用于添加标题
-
谢谢,我正在尝试,但无法打印标题