我用弹性表做了一张桌子:
data %>%
pivot_wider(names_from=Annee, values_from=c(`Nombre`)) %>%
replace(is.na(.), 0) %>%
arrange(match(Sexe, c("Filles", "Garçons"))) %>%
arrange(match(Niveau, c("Groupe 1", "Groupe 2"))) %>%
flextable::flextable() %>%
flextable::align(align = "center", part = "all") %>%
theme_zebra()%>%
merge_v(j = c("Niveau"))%>%
border_outer(part = "all") %>%
hline_top(part = "header") %>%
hline(part="body")%>%
align(align = "center", part = "header") %>%
border_inner_v(part = "all")%>%
valign(valign = "center", part = "header")%>%
fix_border_issues(part = "all")
我需要在弹性表中添加一个新行,这将是每个“Niveau”的“Nombre”之和。 预先感谢您的帮助!
使用一个小的自定义函数将总计行添加到您可以执行的操作:
library(dplyr)
library(tidyr)
library(ggplot2)
library(flextable)
add_total <- \(x) {
x %>%
group_by(Niveau) %>%
summarise(Sexe = "Total", across(where(is.numeric), sum)) %>%
bind_rows(x)
}
data %>%
pivot_wider(names_from = Annee, values_from = c(`Effectifs`)) %>%
replace(is.na(.), 0) %>%
add_total() %>%
arrange(match(Sexe, c("Filles", "Garçons", "Total"))) %>%
arrange(match(Niveau, c("CP", "CE1"))) %>%
flextable::flextable() %>%
flextable::align(align = "center", part = "all") %>%
theme_zebra() %>%
merge_v(j = c("Niveau")) %>%
border_outer(part = "all") %>%
hline_top(part = "header") %>%
hline(part = "body") %>%
align(align = "center", part = "header") %>%
border_inner_v(part = "all") %>%
valign(valign = "center", part = "header") %>%
fix_border_issues(part = "all") %>%
bold(i = ~ Sexe == "Total")