Существует ли (простой) способ преобразования плоских таблиц сопряженности (ftable) в гибкие - PullRequest
0 голосов
/ 05 октября 2018

Я использовал для создания FlexTable-объектов из «плоских» таблиц сопряженности (ftable, stats-package) на основе старых пакетов reporteRs и rtable.До того, как эти пакеты устарели и были удалены из CRAN, была функция as.Flextable.ftable , которая добилась цели.

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

Есть ли способ добиться этого преобразования для нового гибкого пакета?Я не смог найти подобную функцию.

1 Ответ

0 голосов
/ 05 октября 2018

это очень хороший вопрос.Миграция началась, но еще не закончена.Ниже приведен код, который должен выполнять работу на данный момент:

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()
...