Changes in version 0.3.2 (2026-06-03) New Functions and Functionality - Added g_lineplot() for creating line plots with optional summary statistics table. Includes helper functions calc_stats(), g_lineplot_table(), and preprocess_lineplot_data(). - Added ard_tabulate_abnormal_by_baseline() for creating an Analysis Results Data (ARD) object counting participants with abnormal assessments, stratified by their baseline status. - Added tbl_mmrm() and get_mmrm_results() functions to create regression tables for Mixed Models for Repeated Measures (MMRM). (#163) - Added gg_mmrm_lineplot() to create line plots of MMRM results. (#181) - Added gg_pkc_lineplot() to create line plots for PK data. (#185) - Added annotate_gg_pkc() to add optional summary statistics table to gg_pkc_lineplot(). (#189) - Refactored the underlying data.frame alignment and rendering methodology used for plot annotations. Functions for table annotation now use a completely rebuilt engine that ensures X-axis synchronization for stacked tables (annotate_riskdf()) and flexible, reliable placement for floating tables (annotate_surv_med(), annotate_coxph()). (#189) - Refactored functions for lineplot plotting - added gg_lineplot() and annotate_gg() to create lineplots and annotate summary statistics table. (#184) - Added functions reverse_ci(), reverse_rate_difference() to reverse confidence intervals and rate differences in tables from add_row_difference(). (#204) - g_lineplot(), g_lineplot_table(), and preprocess_lineplot_data() were deprecated. (#184) - Added tbl_coxph() to render pairwise Cox proportional hazards results as a gtsummary table. (#159) - Added tbl_hierarchical_incidence_rate() which computes the incidence rate of adverse events (#211) - Added adjust_stat_columns_wrap() which keep the presentation of statistics in one row (#219) - get_cox_pairwise_df() now allows for different methods to compute p-value (#191) and to handle ties (#193). - tbl_coxph() now accepts a data.frame created by get_cox_pairwise_df() as input. (#207) - Added add_grade_column() to inject a grade-label column into tbl_hierarchical_rate_by_grade() output. Decoupled from the table builder to prevent Cartesian join explosion in tbl_merge(). (#226) - get_cox_pairwise_df() now fully supports strata() terms in survival formulas (#256). - The "likelihood-ratio" test now intelligently switches between survival::survreg() (for unstratified models) and survival::coxph() (for stratified models) (#256). - Stripped package namespace prefixes (e.g., survival::) from survival formulas to prevent evaluation errors (#256). - Added ... support in get_cox_pairwise_df() for conf.int (e.g., to adjust CI level) and robust = TRUE (for robust standard errors). Other Updates - tbl_hierarchical_rate_and_count() now emits zero-rows for unobserved factor levels in the first hierarchical variable. (#233) - df2gg_aligned() and df2gg_floating() now preserve original ggplot objects in attr(result, "plotlist") for downstream data extraction after combining with cowplot. (#208) - Remove warning when data has more levels than needed for grade_groups on tbl_hierarchical_rate_by_grade. - Changed the default conf.type from "log" to "plain" (linear) in tbl_survfit_times() and tbl_survfit_quantiles() to align with GDSR guidelines. (#173) - Removed bold from headers when using tbl_strata() (#133). - Unified border width in theme_gtsummary_roche() to 0.5 for header. (#154) - Added example on how to stratify tbl_baseline_chg() by PARAM and split into a list. - Adjusted tbl_mmrm() to allow base_df = NULL. - Fixed two bugs related to summary statistics calculation in ard_tabulate_abnormal_by_baseline(). (#198) - Fixed a bug in gg_pkc_lineplot() causing misplaced error bars on a log scale. (#199) - Adjusted gg_pkc_lineplot() to use tbl_roche_summary() for automatic decimals formatting. - Adjusted tbl_hierarchical_incidence_rate() to handle first event as well as all events (#217) - Adjusted tbl_baseline_chg() to allow for custiomization of display statistics (#222) - Changed baseline statistic argument in tbl_baseline_chg() (#224) - Adjusted modify_zero_recode() to account for strings comprising regular and non-breaking spaces (#230) - tbl_roche_subgroups() now shows n, Events, and Median per arm when time_to_event is specified. The total column shows Total Events instead of Total n. (#235) - Skip tests if suggested packages are missing (Failing test due to missing suggested package #252, @llrs-roche) - The default "log-rank" test now uses survival::survdiff() instead of coin, aligning output more closely with SAS and rtables Changes in version 0.3.1 (2026-01-21) New Functions and Functionality - Added tbl_roche_subgroups() for subgroup analysis. - Added g_forest to create forest plot. Changes in version 0.3.0 (2025-12-06) New Functions and Functionality - Added tbl_null_report() for cases without any information to display. (#11) - Added functions style_roche_number() and label_roche_number() to replace their respective gtsummary versions, with additional inf argument for customization of Inf/-Inf/NaN values. - Added gg_km() function for creating Kaplan-Meier plots. - Added tbl_subgroups and g_forest to make subgroup analysis and forest plots. - Added list("assign_summary_type-arg:cat_threshold" = 0L) to theme_gtsummary_roche(). Numeric variables with few levels will no longer default to summary type 'categorical' in gtsummary::tbl_summary() and tbl_roche_summary(). (#79) Other Updates - Updated variable processing in tbl_baseline_chg() to allow for non-string input. (#114) - Updated details about the sort_hierarchical() and filter_hierarchical() functions in the hierarchical tables article. (#116) - Added the label argument to tbl_hierarchical_rate_and_count() to set hierarchy variables labels in the table header. (#118) Bug Fixes - Fixed remove_duplicate_keys() to remove non-unique column values when the key columns are a mix of unique and duplicated entries. (#129) Changes in version 0.2.0 (2025-08-29) New Functions and Functionality - The tbl_demographics() function has been renamed to tbl_roche_summary() with the following updates. (#73). - Updated tbl_roche_summary() to convert cells with "0 (0.0%)" to "0". - Update the tbl_roche_summary() returned inputs list to match the tbl_roche_summary() argument inputs, whereas it previously returned the tbl_summary() inputs. (#31) - Changed the default header in tbl_roche_summary() tables from **Characteristic** to an empty string. - Fix in tbl_roche_summary() when a variable is all NA within a stratum. The zero count was displayed as "0 (NA%)" instead of "0". (#60) - Added function tbl_hierarchical_rate_by_grade() to summarize adverse event rates by highest toxicity grade. (#46) - Adding the modify_zero_recode() function that recodes "0 (0.0%)" to "0" in summary tables. - Adding the modify_header_rm_md() function to remove bold and italic markdown syntax from the headers of a gtsummary table. (#53) - Adding tbl_hierarchical_rate_and_count() and associated S3 method add_overall() to summarize hierarchical event rates and counts. (#36) - Added tbl_survfit_quantiles() and add_overall.tbl_survfit_quantiles() to create a table of survival quantiles. (#19) - Adding tbl_survfit_times() and add_overall.tbl_survfit_times() - Adding tbl_baseline_chg() function. (#62) - Added function tbl_shift() for easing the creation of shift tables. (#83) - Added style_roche_percent() and label_roche_percent() functions. - Added formatting functions style_roche_ratio() and label_roche_ratio(). (#91) - Added variables and row_numbers arguments to the add_blank_rows() function. (#45) - Re-coding 0 / 0 (NA%) to 0 / 0 in modify_zero_recode(). (#85) Other Updates - Added an article giving an overview of the {crane} package. (#37) - The {gtsummary} is now loaded with {crane}. - Updated Roche theme to bold headers for flextable outputs. - Updated Roche theme to include parentheses around Ns in header, and updated function defaults to include the parentheses in crane functions. - Updated theme_gtsummary_roche() to further style results from gtsummary::tbl_hierarchical*() functions. - Added theme_gtsummary_roche(font_size, print_egine) arguments to control the default font size and the print engine. - Updated Roche theme to use style_roche_percent() as the default function to format percentages. - Added additional {flextable} specs for theme_gtsummary_roche(). Mainly border line width (0.5) and footer font size (font_size - 1). Changes in version 0.1.0 (2025-02-24) - Initial release