tableone icon indicating copy to clipboard operation
tableone copied to clipboard

Output of summary.TableOne as data.frame?

Open arupakaa opened this issue 4 years ago • 1 comments

Thank you for such excellent work.

Simple question: how can we save summary.TableOne output as DF? It doesn't seem to work the same as the print.TableOne wrt as.data.frame.

Any help/ideas are very much appreciated.

arupakaa avatar Apr 12 '20 16:04 arupakaa

I found a code from kaz-yos's gists.

library(openxlsx)
tableone_mat_to_data_frame <- function(mat) {
  bind_cols(data_frame(Variable = rownames(mat)),
            as_data_frame(mat))
}


###  Write a xlsx file
write_tableone_mat_to_xlsx <- function(tableone_mat, file) {
  ## Create a workbook object with one sheet
  ## https://rdrr.io/cran/openxlsx/man/setColWidths.html
  wb <- createWorkbook()
  addWorksheet(wb, sheetName = "1")
  
  ## Write data frame data to the workbook object
  writeData(wb, sheet = 1, x = tableone_mat_to_data_frame(tableone_mat))
  
  ## Fix column width automatically
  setColWidths(wb, sheet = 1, cols = seq_len(ncol(tableone_mat)), widths = "auto")
  
  ## Format the variable name column
  ## https://rdrr.io/cran/openxlsx/man/createStyle.html
  varname_style <- createStyle(halign = "left", valign = "center")
  addStyle(wb, sheet = 1, style = varname_style, rows = seq_len(nrow(tableone_mat) + 1), cols = 1, gridExpand = TRUE)
  
  ## Format all other columns
  varval_style <- createStyle(halign = "center", valign = "center")
  addStyle(wb, sheet = 1, style = varval_style,  rows = seq_len(nrow(tableone_mat) + 1), cols = seq_len(ncol(tableone_mat))[-1], gridExpand = TRUE)
  
  ## Save to a file
  saveWorkbook(wb, file = file, overwrite = TRUE)
}

but I couldn't figure out what "tableone_mat" is mean?

akarito avatar Apr 09 '21 09:04 akarito