NEWS
rifttable 0.7.3 (2026-10-31)
- New functionality:
- The
timepoint for time-to-event analyses (e.g., "cuminc",
"cumincdiff") can be directly provided as a variable in the design.
The previous way of providing it via arguments = list(timepoint = 365.25)
remains functional as a second option.
- The spelling
strata instead of stratum in the design is also accepted
as a fallback.
- Bug fixes:
table1_design() omits an empty row for categorical variables that are
completely NA (thanks @tsurudak for the bug report).
survdiff_ci() now reports two-sided p-values (thanks @eribul for the
bug report #12).
- Confidence limits for ratios and differences of cumulative incidence
(
type = "cumincdiff" and "cumincratio") in settings without competing
events have been fixed. Previously, upper and lower limits were swapped
in intermediary steps when using the default MOVER method, leading to
shifted intervals (thanks @tgerke for the bug report #13 and pull request).
- All
data are now kept as a tibble internally to address edge cases of
failing input checks on data provided as a data.frame.
- The
exposure variable name or label can be now be identical to a category
of this variable, and empty labels are better supported.
rifttable 0.7.2 (2026-01-18)
- Bug fixes:
survdiff_ci() now uses the conf.level argument correctly in confidence
interval estimation using the MOVER approach (#8).
- Internal:
- Anticipate changes in {dplyr} 1.2.0 in label handling in unit tests (thanks
to @DavisVaughan, #10).
rifttable 0.7.1 (2025-06-06)
- Housekeeping for CRAN release
rifttable 0.7.0
- Breaking changes:
- Require base R pipe
|> and thus R >= 4.1.
- Make the
id variable identifying clustered observations within the same
individual a global rifttable() option for the entire data set, not only
for specific estimators.
- New functionality:
- Expand input checks to missing values in time/event variables, to missing
effect modifiers for joint models and their levels, to nonexistent custom
estimators, and to empty input data sets.
- Add
type = "sum" estimator.
- Internal and bug fixes:
- Cover entire package by unit tests.
- Return exposure consistently as a
character.
- Let the
design accept weight in addition to weights.
- Require {risks} >= 0.4.3.
- Use modern tidyselect, anonymous functions, and code style.
rifttable 0.6.3
- New functionality:
- Provide easier interface to code competing events by directly providing
event = "event_variable@Event_Type_One" in the design.
If multiple event types are present, estimate cumulative incidence and
differences/ratios of cumulative incidence in a competing-event setting.
- Allow for clustered observations in survival data, e.g., multiple rows per
person.
- Estimate ratios of survival and cumulative incidence, i.e., x-year risk
ratios. Use MOVER estimation for confidence intervals of both ratios and
differences in survival and cumulative incidence by default.
- Support weights, e.g., inverse-probability weights, directly via a
weights argument in the design. Weighted estimates are currently
available for many survival estimators: type = "cuminc", "surv", their
differences and ratios (e.g., "cumincdiff"), and "hr". This is a
breaking change for Cox models (type = "hr"), where providing weights in
the arguments list now generates an error.
- Bug fixes:
- Allow for
@ in factor levels for a table1_design().
rt_gt(): Output knitr-formatted tables for GitHub-flavored markdown also
in Quarto .qmd, similar to .Rmd.
- Better handling of edge cases, e.g., ratios of 0, when rounding estimates.
- Expanded documentation
- Restructure site.
- Separate documentation of estimators by outcome type.
- New FAQs on confidence levels, reference levels, custom functions, and
joint models.
rifttable 0.6.2
- New functionality:
- Add overall argument
exposure_levels to let user control handling of
missing exposure levels (NA) or factors with empty levels as the exposure.
type = "geomean" for geometric means.
- Documentation: Expand FAQs.
- Internal and bug fixes:
- Consider
exposure or trend of "" as missing, and stratum = "" as no
subsetting by the effect_modifier, instead of subsetting to effect
modifier being an empty string. Input check that a stratum must be provided
for joint models and strata are not empty.
- Consider missing
type as "blank".
- Do not add empty rows/columns if
type2 has empty results for some cells or
if only a trend variable and no exposure is given.
- Rounding works even if result vector contains strings (e.g., no estimate).
- More safeguards for all-
NA outcome variables. More input checks.
- Do not warn about non-
0/1 outcomes in log-linear models for ratios of
continuous variables.
- Add initial set of unit tests.
rifttable 0.6.1
- New functionality:
- Cox models (
type = "hr") allow for weights, clustering, and robust
standard errors.
- Argument
ratio_digits_decrease: By default, decrease number of decimal
digits shown for ratios by 1 digit for ratios > 3 and by 2 digits for ratios
- Leads to rounded ratios and confidence intervals of
1.23, 3.4, and
11.
rt_gt() now indents the first column and applies markdown formatting to it
by default.
- New FAQ vignette.
- Bug fixes:
- Binary outcomes returned
NA instead of 0 in unstratified tables
with all-null outcome.
type = "maxfu" ignored digits and diff_digits.
- Allow for different
exposure (strata labels) and arguments in one table.
- Show unstratified estimate if
exposure is "", not just for NA.
- Internal:
rt_gt(): suppress random id of gt tables to keep git diff slim.
- Keep variables
.event, .outcome, etc. available under their original
names.
- Require {risks} >= 0.4.2.
- Examples load the
breastcancer dataset from the risks package.
rifttable 0.6.0
- Breaking changes:
to is set to ", " by default, instead of "-" for ratio variables and
" to " for difference variables
- Custom functions are now directly called via the
type variable,
following a restructuring of all estimation functions with greater
flexibility.
design$type no longer accepts additional arguments, such as time points.
Supply list instead via design$arguments.
- Suppression of strata with sparse or re-identifiable data with
design$nmin
now differentiates between counts of total observations or outcomes,
depending on estimator.
- New function
table1_design(): Generate design of a descriptive "Table 1."
- New
outcome option "variable@level" for categorical variables that
displays level as a binary outcome. Used by table1_design().
- Support unstratified tables displaying the trend/linear slope (
trend
variable in the design) without an exposure.
- More customization:
rifttable(reference = ...): Label for the reference category.
design$ci: Width of confidence intervals.
design$na_rm: Omitting observations with missing outcome data.
design$arguments: Flexibly passing along any argument to estimation
functions.
- New vignette describing all estimators.
- Internal:
- Drop dependency on R >= 4.1 and native pipe.
- Require {risks} >= 0.4.0.
- Remove dependency on {labelled} package.
- The {gt} and {quantreg} packages are now optional as soft dependencies.
- Compatible with {dplyr} 1.1.0, {tidyselect} 1.2.0
rifttable 0.5.0
- khsmisc::table2() "graduated" into its own package. See {khsmisc} Changelog for earlier versions.
- Add
breastcancer() dataset
- Use R >= 4.1 native pipe,
|>
- Remove RMTL estimators