问题描述
我正在尝试使用R中的flextable
包从书中复制表格。我在表格中标有align(align = "center",part = "all")
的标题下方有两列,如果我使用它们,它们的对齐方式不佳autofit(part = "all")
。
有没有一种方法可以解决此问题,从而使标题下的列不向右偏移?
这是完整的代码:
Opinions <- read.table("http://users.stat.ufl.edu/~aa/cat/data/Envir_opinions.dat",header = TRUE,stringsAsFactors = TRUE)
# Make contingency table
tab <- as.matrix(addmargins(xtabs(~y1 + y2,data = Opinions)))
library(tidyverse) # for tibble()
# Add label as the first column and variable names
`Table 8.1` <- tibble(`Pay Higher Taxes` = c("Yes","No","Total"),Yes = tab[,1],No = tab[,2],Total = tab[,3])
library(flextable)
my_header <- data.frame(
col_keys = colnames(`Table 8.1`),line1 = c("Pay Higher Taxes",rep("Cut Living Standards",2),line2 = colnames(`Table 8.1`)
)
library(flextable)
flextable(`Table 8.1`,col_keys = my_header$col_keys) %>%
set_header_df(
mapping = my_header,key = "col_keys"
) %>%
theme_booktabs() %>%
merge_h(part = "header") %>%
merge_v(part = "header") %>%
merge_h(part = "body") %>%
merge_v(part = "body") %>%
align(align = "center",part = "all") %>%
autofit(part = "all") %>%
set_caption(caption = "Table 8.1")
解决方法
我对flextable
软件包并不陌生。但是当我在合并标题之前 对齐表时,它对我有用。也许就是诀窍。
flextable(`Table 8.1`) %>%
add_header_row(values = c("Pay Higher Taxes","Cut Living Standard","Total")) %>%
theme_booktabs() %>%
autofit(part = "all") %>%
align(align = "center",part = "all")%>%
merge_h(part = "header") %>%
merge_v(part = "header") %>%
set_caption(caption = "Table 8.1")