【问题标题】:Is there an (easy) way to convert flat contingency tables (ftable) to flextable有没有一种(简单的)方法可以将平面列联表(ftable)转换为 flextable
【发布时间】:2019-03-10 16:56:22
【问题描述】:
【问题讨论】:
标签:
r
flextable
contingency
【解决方案1】:
这是一个非常好的问题。迁移已开始但尚未完成。下面是现在应该完成这项工作的代码:
ftable_to_flextable <- function( x ){
row.vars = attr( x, "row.vars" )
col.vars = attr( x, "col.vars" )
rows <- rev( expand.grid( rev(row.vars), stringsAsFactors = FALSE ) )
cols <- rev(expand.grid( rev(col.vars), stringsAsFactors = FALSE ))
xmat <- as.matrix(x)
cols$col_keys = dimnames(xmat)[[2]]
xdata <- cbind(
data.frame(rows, stringsAsFactors = FALSE),
data.frame(xmat, stringsAsFactors = FALSE)
)
names(xdata) <- c(names(row.vars), cols$col_keys)
ft <- regulartable(xdata)
ft <- set_header_df(ft, cols)
ft <- theme_booktabs(ft)
ft <- merge_v(ft, j = names(row.vars))
ft
}
library(flextable)
library(magrittr)
ftable(Titanic, row.vars = 1:3) %>% ftable_to_flextable()
ftable(Titanic, row.vars = 1:2, col.vars = "Survived") %>% ftable_to_flextable()
ftable(Titanic, row.vars = 2:1, col.vars = "Survived") %>% ftable_to_flextable()