NEWS.md
pt_demographics() was refactored (#363).
Statistic is “Missing” (provided by the default summary function for continuous data) and all summary values are “0” are dropped by defaultdrop_miss can be used to optionally retain the “Missing” stat for all continuous data summariespt_inventory_long() is a new function to create data inventory summaries like those generated by pt_data_inventory(), but stratified by multiple covariates (#360).
When a caption macro name is provided to stable_long(), it will only be used if the macro is defined; if the macro is not defined, some replacement text is included noting that the macro will be used once it is defined (#355).
st_as_image() and st2report()) where a list was getting passed as .envir to glue::glue() rather than an environment; this was causing glue::glue() to fail after changes rolled out in glue version 1.8.0 (#346).read_glossary() reads from .tex or .yaml formatted files, returning a glossary objectselect_glossary() selects specific entries from a glossary objectas_glossary() creates a glossary object on the fly or from a listglossary_notes() creates notes from a glossary object, a list, or the name of a glossary filest_notes_glo() creates and and attaches notes to a table in a pipelinestable_save_image() added to create an image from a table and save to a specific location; this builds on st_aspdf() and st_aspng(), adding convenient syntax and options (#333).maxex argument to sig() can now be set through the pmtables.maxex option (#328).pt_cat_long() when the by argument is used with no all data summary (#330).st_caption() function added to associate a caption (including short caption and possibly a label) to any table; captions will appear in st2report() outputs; captions will always be written to file for stable_long outputs and can be optionally written to file for stable outputs (#313).
yaml_as_df() will now retain row names in a column named by the new argument row_var (#317).
st_align(), st_left(), st_right() and st_center() can now be called multiple times in a pipeline, supported by new update method for aligncol objects (#315).
st_clone() function added to make a copy of stobject objects (#314).
The id_col argument to pt_cont_long() and pt_cont_wide() is deprecated (#305).
sumrows was not recognized as a valid field in stobject objects (#312).New function st_filter() to filter data item in a pipeline (#298).
Add summarize_all and all_name_stacked arguments to pt_data_inventory() (#297).
Fixed bug where all_name was not getting used in pt_data_inventory() (#297).
Fixed bug where detached table notes were getting rendered too close to the main table when building standalone pdf under certain TeX distributions (#286).
New functions st_as_image(), st2pdf(), and st2png() to render tables with TeX to either pdf or png format; image files may be kept on disk or read back for display while knitting; pdflatex system dependency for pdf images and latex + dvipng for png images; additional Suggested packages include magick and pdftools (#277, #278).
sig() now returns character when integer type is passed (#272).
st_new() is now generic with dispatch for data.frame and objects with class pmtable; most pipeline functions can now be used to customize tables coming from pt_cat_*, pt_cont_*, pt_demographics() and pt_data_inventory() (#274).
New functions st_notes_detach(), st_notes_rm(), st_notes_app(), st_notes_str(), st_notes_sub() and st_notes_conf() to help working with table notes in a pipe context (#274).
st_span() and st_span_split() accept align argument to push column spanner titles to the left, right or center (default); the argument eventually gets passed to colgroup() (#261).
pt_cat_wide(), pt_cat_long() and pt_demographics() gain argument denom to alter the denominator when calculating percents for categorical data summaries (#268).
pt_cat_wide() gains argument complete to display missing levels of by and panel (#268).
Put stories in yaml format; add script to build validation docs from the yaml file (#269, #270).
colgroup() (and st_span()) gains an align argument to position the spanner title on left or right in addition to the center (default) #260, #261.
rowpanel() (and st_panel()) gains jutargument to push non-panel table contents to the right relative to the panel header row so that contents under the panel header are indented #251, #253.
Panel header rows are now modified so that the header row stays with the first non-header row for longtable output #252, #253.
Consistent BQL / BLQ handling for column titles and table notes for pt_data_inventory() #254, #255.
Add cols_omit option to omit column header data (#213)
Add pt_demographics function to generate a new table of both continuous and categorical data (#186, #249)
Add title_side argument to colsplit() so that the title can be taken from left or right side of split (#231)
Add hline argument to rowgroup() constructor to make the horizontal line above the panel data optional (#215)
Refactor pt_data_inventory() to calculate percent BLQ using denominator that is the sum of the number of observations BLQ and non-BLQ / non-missing (#221, #222)
List names are now escaped when passing a list of tables to st2report() and friends (#232)
Add newline after printing table text using st_asis() (#224)
Fix bug where arguments could not be passed along to stable_long() when coercing pmtable output (#203)
Fix bug where user-specified font size was not getting propagated to long table output with stable_long() (#204)
.list argument to st_rename() allowing user to pass rename information as a named list with format old name = new name #189drop_miss wasn’t executing correctly #182stable_long() is now a generic function with methods for data.frame, stobject and pmtable #179st_span() was slightly refactored so that it would dispatch to st_span_split() when the split argument was passed #173span_split() was updating column names, but this was happening before other spans were calculated #172NA) and will replace them with the string "NA" and issue a warning #117st2report(), st2article() or st2doc(); see landscape argument to st_wrap() #129lt_cap_short argument to stable_long() to set a short table title that will appear in list of tables #131na_fill argument to set placeholder #133hline indices when set with st_hline() #134cols_bold that prevented sanitizing text prior to styling as bold #141st2report() to quickly preview tables in a real-like report document, build directly with pdflatex #148st2article() to quickly preview tables in a latex article-like, built directly with pdflatex #148st_asis() function and asis argument to st_wrap(); pipe tables to st_asis() or use asis argument to render tables in line in an Rmd document; in addition to formatting output “as-is”, latex dependencies are also invoked #149yaml_as_df() functionality to accept table columns by position, rather than name #154stable() method for stobject #159by argument to pt_cont_long so that, when panel is also passed, the table is paneled by col and is “by” the panel variable #92pt_cat_long so that summary numbers are shown underneath column labels #102row and col in tab_size() with the same behavior as tabular / stable() #105cols_extra feature, allowing extra column header information passed as a data frame (see tab_cols()) #102, #118data arguments to reinforce that pmtables doesn’t filter or subset data prior to processing or summarizing #120stable_long() where stable_file wasn’t getting savedn summary column to pt_cat_wide() #80pt_wrap() generic; add method for stable_long that doesn’t wrap with table #121duplicates_ok argument to rowpanelduplicates_ok is FALSEget_debug_data()
st_* functions that can be used in a pipeline to set arguments for stable(); see inst/demo-pipe.pdf
st2doc will render multiple page document when a list of tables is passed in as textstable argument from bold_cols to col_bold
col_bold argumentr_file and output_file are only settable with options r.file.label and output.file.label, respectivelycol_space, row_space and fontsize arguments to stable(); they should be set with a call to tab_size
st_sizes() to set sizes argument to stable()
stable() function in order to reduce cyclomatic complexity and shorten overall function length in response to brief review and comment by TS representativepanel argument as a rowgroup objectas.panel() function for constructing rowgroup objectspanel is passed with an alternate name, the name is is used to set the prefixpmtables.dir to set output directory for stable_save()
mrg.script to set script name in st_files() and tab_notes()
... to create multi-line column namesheader_row argument to tab_cols() to control the spacing between column labels and between labels and units?pt_opts
center argument to col_fixed; when ragged is no, the column can still be fixed and centered...) added to st_new() / st_data() to be collected by argsst_units() pipeline functiontex_bold() function to style data frame contentstex_it() function to style data frame contentsst_edit()
st_hline(); allow to add hline by regexp across whole data frame or targetedst_bold and st_it to target columns or whole data framest_drop()
analysis1, pmt_pk, pmt_first, pmt_obs
tab_cols: all col_xyz arguments are renamed to cols_xyz
find_bq_col function to allow either BQL or BLQ as default value for bq_col argument to pt_data_inventory
pattern and cols arguments to st_sumrow; this allows calculation of rows based on a regular expressiondf_grep_rows and df_grepl_rows functions for finding rows where a regular expression is matchedpmtables.escape option to pass a character vector of items to be escapedheader_row (tab_size()) is a negative number; enter a negative number if you want to remove space between header rows; this should only be required when row space is increased