Changelog
dfdiffs 2.2.0
PROC COMPARE parity: dfdiffs now reports the headline summary statistics and variable-structure diffs that PROC COMPARE prints before its detailed value comparison, and closes a gap where the app’s download handler had drifted from the package functions it should have been calling.
New
compare_columns(): reports which columns are only inbase, only incompare, or common to both, with aprint.dfdiffs_column_diff()console method.New
compare_summary(): row/column/value headline counts (common, new, and deleted rows; common and dataset-only columns; differing values and class mismatches), with aprint.dfdiffs_summary()console method. Built entirely oncompare_data()andcompare_columns(), no new comparison logic.compare_values()gainsignore_case/trim_wsarguments for character comparisons, anddiff_values_by_key()now warns (not errors) whenbydoesn’t uniquely identify rows inbaseorcompare– both threaded throughcreate_changed_data(),create_modified_data(), andcompare_data().class_diffs(already computed bydiff_values_by_key(), but previously discarded) is now surfaced throughcreate_changed_data(),create_modified_data(), andcompare_data()(aschanged_class_diffs).create_comparison_report()writes three new xlsx sheets – “Column Diffs”, “Class Diffs”, and “Summary” – alongside the existing six.The vignettes were rewritten. The repeated walkthroughs of all ten
by/by_col/colscombinations increate-new-data,create-deleted-data, andchanged-modified-dataare now one reference table plus three worked examples each, andmodified-datawas merged intochanged-modified-data.multiple-comparisonsnow iteratescompare_data()instead ofarsenal/diffdf, andsimilar-workcompares against them directly. Document-wideerror = TRUEwas removed, which had been hiding a missingdplyrimport insimilar-workand a stale file path inchange-frequency-from-proc-compare.The app now uses the “Golden Age Pulp Cover” palette (cream page, navy/red/amber accents), the same one as the pkgdown site, in place of “Atomic Age Space Race”.
dfdiffs_fresh_theme(), the navbar, the results-tab icons, and every*_react_theme()(light and dark) were updated.mod_compare.R’s download handler no longer reimplementscreate_comparison_report()’s logic by hand; it now callscreate_comparison_report()directly, which also fixes the downloaded report being missing the “Base Data”/“Compare Data” sheets the package function already produced.
dfdiffs 2.1.0
The comparison engine (create_new_data(), create_deleted_data(), create_changed_data(), create_modified_data(), and the helpers behind them) is now built entirely on base R. dplyr, tidyr, tidyselect, and diffdf are no longer required to use the package; Imports drops from 16 packages to 11.
New base-R helpers replace the
dplyr/diffdfcall sites:select_cols(),anti_join_base(),left_join_base()(inR/join_helpers.R), andcompare_values()/diff_values_by_key()(inR/compare_values.R), the direct replacement fordiffdf::diffdf().Value comparison is more accurate than before, not just equivalent:
compare_values()does real numeric-tolerance comparison (ported fromdiffdf’s own formula), treats aDateand aPOSIXctrepresenting the same instant as equal (an explicit improvement, sincediffdfitself treats that as a class mismatch), and compares factors by label. Previously, bothcreate_changed_data()andcreate_modified_data()coerced every column to character before comparing, so none of this tolerance or type-awareness was ever actually exercised.diffdf,dplyr, andtidyrmoved toSuggests(a few vignettes demonstrate them directly as points of comparison, matching howarsenalwas already handled);tidyselectandstringrwere dropped entirely.Fixed two latent cross-file
NAMESPACEcoupling bugs that this change surfaced:mod_select.R/mod_compare.R’s bareselect()calls andlaunch_select_demo.R’s barestr_detect()call were only working because an unrelated file happened to declare the matching@importFromtag.Fixed a
data.tablecompatibility bug in the new base-R helpers. Becausedata.table’s[has different indexing semantics than a plaindata.frame, every helper now coerces its input withas.data.frame()first.
dfdiffs 2.0.0
Major overhaul of the app-package: bslib UI, fewer dependencies, new example data, and a more complete test suite.
App migrated from bs4Dash to bslib (
page_navbar(),input_dark_mode()), with modules renamed tomod_upload/mod_select/mod_compareand entry points renamed tolaunch_app()/launch_app_dev()/launch_*_demo(). A custom “Atomic Age Space Race” theme applies to both the app and the pkgdown site.Every reactable table in
mod_upload/mod_select/mod_comparenow follows the navbar’s dark-mode toggle (react_themes.R’s themes becamedark-aware functions).The upload/select/compare workflow now auto-advances between steps as the user completes them, with a “Step X of 3” indicator in the navbar.
fluidRow()/column()grids were replaced withbslib::layout_columns(), and the results tables can go full-screen.mod_display(unwired, redundant withmod_select’s preview) was removed, along with its demo app and tests.Dependencies cut from ~34 Imports to ~17: dropped unused packages entirely (
hrbrthemes,RColorBrewer,vroomfrom Imports), rewrote small call sites to dropmagrittr,forcats, andrlang, and moved vignette-only packages (flextable,kableExtra,gtsummary,gt,glue,labelled,readr,lubridate,vetr,waldo,vctrs,fs) to Suggests. Addedggplot2to Imports (it was already used but undeclared).create_modified_data()/create_comparison_report()now build ondiffdf::diffdf()instead ofarsenal::comparedf(), so the package no longer needs both comparison engines;arsenalwas dropped.All 8 core example datasets (
T1Data,T2Data,NewData,CompleteData,IncompleteData,DeletedData,InitialData,ChangedData) now carry a clinical-observation story instead of placeholder pangram text. The Sean Lahman baseball archive data (~96MB acrossdata/andinst/extdata/, undeclared and unattributed) was replaced by a synthetic, package-generated “site roster” dataset family (Roster2021-Roster2024) used across thecompare-data,create-comparison-report,create-join-column,upload-data, andmultiple-comparisonsvignettes. 11 orphaned/unused datasets were removed.Fixed:
ggplot2was used inmod_compare.Rwithout being declared inDESCRIPTION. Fixed:R/_diffdf.R, a dead, unexported, broken vendored copy ofdiffdf::diffdf(), was removed. Fixed: acreate-join-column.Rmdvignette chunk locally redefinedcreate_join_column()with stale parameter names, shadowing the real function so the vignette never actually exercised it.New tests for
compare_data(),create_comparison_report(), the xlsx upload path inmod_upload_server(), and a build smoke test for everylaunch_*()entry point. Filled in missing@param/@returndocumentation on the module UI/server functions.Known issue (not fixed in this release):
create_new_column()errors withsep must be a single string, not absentwhencompare_data()/create_comparison_report()are called with aby_colargument or a multi-columnby.
dfdiffs 0.1.0
-
New deployed applications with the
create_modified_data()function (fromarsenal::comparedf()) -
New
create_comparison_report()function for generating Excel reports- Includes
create_empty_tbl()function
- Includes
-
New vignette
-
create-comparison-report.Rmd: covers the functions used to create an Excel comparison report.
-
-
Code clean-up:
documented
dev_modulesdocumented UAT app modules (in
inst/)removed
generate_compare_report()function
dfdiffs 0.0.0.9000
2022-07-03
updated all functions to use
base/compinstead ofprev/currandolddf/newdf.new function
create_changed_data()for changed/modified data based on thediffdfpackage.-
uploadDataDemo deployed dev sheet
-
devfolder containsuploadDatamodule
-
-
New vignettes:
getting started
create new data
create deleted data
create modified data
create changed data
similar work