atorus-research / Tplyr

Home Page:https://atorus-research.github.io/Tplyr/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Feature request: Produce mock tables

asbates opened this issue · comments

Description

Be able to generate mock tables where placeholders are used instead of numbers. For example instead of having 1.23 for a mean, we can build a table that has x.xx.

Example Usage

I think an argument to build would be the most natural API.


tplyr_table(adsl, TRT01P, where = SAFFL == "Y") %>% 
  add_layer(
    group_desc(AGE, by = "Age (years)")
  ) %>% 
  add_layer(
    group_count(AGEGR1, by = "Age Categories n (%)")
  ) %>% 
  build(mock = TRUE)

I could see this being problematic though because tplyr_table expects a data frame and the layers use NSE. So maybe there could be a helper function to generate a mock data set. Something like

adsl <- tplyr_mock_data(col_names = c("TRT01P", "SAFFL", "AGE", "AGEGR1"), n_rows = 10)

I like the feature and I think this is doable. I think what we could actually do is create a new function called preview().

Here's how I could envision the process flow:

  • Collect variables declared in the different components of the tplyr_table
  • Assemble a mock dataset with the proper names
  • Allow a parameter where user can specify the treatment groups necessary for display
    • Otherwise mock up fake treatment groups
  • Make a minimal fake dataset based on that info. @asbates this is basically the suggested tplyr_mock_data() function you suggested, but automated based on layer info
    • For counts, mock up some random text values - maybe about 3 distinct values?
    • If it's a nested layer, then 3 distinct outside with 3 distinct inside (total of 9 records)
    • For a desc layer, randomly generate a continuous variable (or just saved a generic numeric vector) to mock the data. Maybe 10 records.
  • Run build on the mock data and get the output
  • Loop over the layers and replace the numeric values with the format string values
    • If auto precision was used, just replace a+n with x + n x's - so "a+2" becomes "xxx"

@asbates any more thoughts?

@mstackhouse One thing I think most people would want is the ability to specify factor levels in addition to treatment groups. If I'm making an AE table for example, I want to see specific values for SOC, not a generic "label 1", "label 2".