【问题标题】:Is there an (easy) way to convert flat contingency tables (ftable) to flextable有没有一种(简单的)方法可以将平面列联表(ftable)转换为 flextable
【发布时间】:2019-03-10 16:56:22
【问题描述】:

我曾经根据旧包 reporteRs 和 rtable 从“平面”列联表(ftable、stats-package)创建 FlexTable 对象。在这些包过时并从 CRAN 中删除之前,有一个函数 as.Flextable.ftable 可以解决问题。

--> 见:https://rdrr.io/cran/rtable/man/as.FlexTable.ftable.html

有没有办法为新的 flextable 包实现这种转换?我还没有找到类似的功能。

【问题讨论】:

    标签: 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()
    

    【讨论】:

    • 哇,这太棒了!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-09-24
    • 2010-09-06
    • 1970-01-01
    • 1970-01-01
    • 2021-12-25
    • 2011-05-15
    • 2020-09-27
    相关资源
    最近更新 更多