Skip to content

Feature/df explicit na factor level method#1493

Closed
shajoezhu wants to merge 9 commits into
mainfrom
feature/df-explicit-na-factor-level-method
Closed

Feature/df explicit na factor level method#1493
shajoezhu wants to merge 9 commits into
mainfrom
feature/df-explicit-na-factor-level-method

Conversation

@shajoezhu

Copy link
Copy Markdown
Contributor

see #1487

to trigger cicd checks

kaipingyang and others added 7 commits July 2, 2026 09:27
…ttern to df_explicit_na

- factor_level_method: controls level ordering (sort_auto/sort_radix/data)
  sort_auto preserves original behaviour; sort_radix uses byte-order (ASCII)
  sort which is not locale-sensitive; data uses first-appearance order
- factor_as_factor: when TRUE, re-encodes existing factor columns via
  factor_level_method (default FALSE preserves original behaviour)
- factor_level_last_pattern: regex to move matching levels to end before
  na_level; NULL by default (no effect); only applies during re-encoding

Closes #1322

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Move factor_as_factor/factor_level_method/factor_level_last_pattern
  after na_level to preserve positional call compatibility
- Update @param order in roxygen and man/df_explicit_na.Rd accordingly
- Replace match.arg() with checkmate::assert_choice() so error message
  matches test expectation and style is consistent with rest of file
- Drop expect_false(identical(...)) test line that fails under LC_COLLATE=C
  (testthat edition 3 forces C locale in CI)
@github-actions

github-actions Bot commented Jul 12, 2026

Copy link
Copy Markdown
Contributor

badge

Code Coverage Summary

Filename                                   Stmts    Miss  Cover    Missing
---------------------------------------  -------  ------  -------  ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
R/abnormal_by_baseline.R                     101       3  97.03%   242, 244-245
R/abnormal_by_marked.R                        88       8  90.91%   94-98, 281, 283-284
R/abnormal_by_worst_grade.R                   94       3  96.81%   215, 217-218
R/abnormal_lab_worsen_by_baseline.R          159      10  93.71%   205-208, 213, 215-216, 459-461
R/abnormal.R                                  78       2  97.44%   222, 224
R/analyze_variables.R                        320      11  96.56%   593-596, 818-823, 831
R/analyze_vars_in_cols.R                     178      14  92.13%   178, 221, 235-236, 238, 246-254
R/bland_altman.R                              92       1  98.91%   46
R/combination_function.R                       9       0  100.00%
R/compare_variables.R                         35       0  100.00%
R/control_incidence_rate.R                    10       0  100.00%
R/control_logistic.R                           7       0  100.00%
R/control_step.R                              23       1  95.65%   58
R/control_survival.R                          16       0  100.00%
R/count_cumulative.R                         115       4  96.52%   74, 270-271, 273
R/count_missed_doses.R                        89       4  95.51%   206-209
R/count_occurrences_by_grade.R               169       8  95.27%   178, 386, 388, 465, 467, 469, 473-474
R/count_occurrences.R                        137      10  92.70%   119, 262-264, 330-332, 334, 338-339
R/count_patients_events_in_cols.R             67       1  98.51%   60
R/count_patients_with_event.R                 73       2  97.26%   220, 223
R/count_patients_with_flags.R                 93       2  97.85%   234, 236
R/count_values.R                              61       2  96.72%   193, 196
R/cox_regression_inter.R                     154       0  100.00%
R/cox_regression.R                           161       0  100.00%
R/coxph.R                                    165       7  95.76%   190-194, 236, 251, 259, 265-266
R/d_pkparam.R                                406       0  100.00%
R/decorate_grob.R                            116       0  100.00%
R/desctools_binom_diff.R                     621      64  89.69%   53, 88-89, 125-126, 129, 199, 223-232, 264, 266, 286, 290, 294, 298, 353, 356, 359, 362, 422, 430, 439, 444-447, 454, 457, 466, 469, 516-517, 519-520, 522-523, 525-526, 593, 604-616, 620, 663, 676, 680
R/df_explicit_na.R                            45       0  100.00%
R/estimate_multinomial_rsp.R                  86       4  95.35%   65, 212, 214-215
R/estimate_proportion.R                      240       7  97.08%   88, 99, 255, 257-258, 389, 553
R/fit_rsp_step.R                              36       0  100.00%
R/fit_survival_step.R                         36       0  100.00%
R/formatting_functions.R                     190       2  98.95%   141, 276
R/g_forest.R                                 585      60  89.74%   240, 252-255, 260-261, 275, 277, 287-290, 335-338, 345, 414, 501, 514, 518-519, 524-525, 538, 554, 601, 630, 705, 714, 720, 739, 794-814, 817, 828, 847, 902, 905, 1040-1045
R/g_ipp.R                                    133       0  100.00%
R/g_km.R                                     350      57  83.71%   285-288, 307-309, 363-366, 400, 428, 432-475, 482-486
R/g_lineplot.R                               261      22  91.57%   222, 397-404, 443-453, 562, 570
R/g_step.R                                    68       1  98.53%   108
R/g_waterfall.R                               47       0  100.00%
R/h_adsl_adlb_merge_using_worst_flag.R        73       0  100.00%
R/h_biomarkers_subgroups.R                    91      23  74.73%   40-42, 84-103
R/h_cox_regression.R                         110       0  100.00%
R/h_incidence_rate.R                          45       0  100.00%
R/h_km.R                                     507      39  92.31%   137, 189-194, 287, 378, 380-381, 392-394, 413, 420-421, 423-425, 433-435, 460, 465-468, 651-654, 1108-1117
R/h_logistic_regression.R                    468       3  99.36%   203-204, 273
R/h_map_for_count_abnormal.R                  54       0  100.00%
R/h_pkparam_sort.R                            15       0  100.00%
R/h_response_biomarkers_subgroups.R           77      12  84.42%   50-55, 107-112
R/h_response_subgroups.R                     178      18  89.89%   257-270, 329-334
R/h_stack_by_baskets.R                        64       1  98.44%   89
R/h_step.R                                   178       0  100.00%
R/h_survival_biomarkers_subgroups.R           73       6  91.78%   111-116
R/h_survival_duration_subgroups.R            207      18  91.30%   259-271, 336-341
R/imputation_rule.R                           17       0  100.00%
R/incidence_rate.R                           103       7  93.20%   68-73, 242
R/logistic_regression.R                      102       0  100.00%
R/missing_data.R                              26       5  80.77%   39, 62-63, 96, 106
R/odds_ratio.R                               157       4  97.45%   270-273
R/prop_diff_test.R                           191       2  98.95%   267, 269
R/prop_diff.R                                521      21  95.97%   95-99, 136, 332, 334, 420-427, 576, 901, 1073, 1077, 1080
R/prune_occurrences.R                         57       0  100.00%
R/response_biomarkers_subgroups.R            124      10  91.94%   88-91, 270-275
R/response_subgroups.R                       252      16  93.65%   100-105, 271-275, 280, 282-283, 310-311
R/riskdiff.R                                  65       4  93.85%   94-97
R/rtables_access.R                            38       0  100.00%
R/score_occurrences.R                         20       1  95.00%   124
R/split_cols_by_groups.R                      49       0  100.00%
R/stat.R                                      59       0  100.00%
R/summarize_ancova.R                         174       2  98.85%   355-356
R/summarize_change.R                          72       3  95.83%   175, 177-178
R/summarize_colvars.R                         13       1  92.31%   75
R/summarize_coxreg.R                         172       0  100.00%
R/summarize_glm_count.R                      269      10  96.28%   129-130, 202-203, 459-463, 596
R/summarize_num_patients.R                   121      10  91.74%   122-124, 244, 248, 252-253, 337-338, 340
R/summarize_patients_exposure_in_cols.R      155       7  95.48%   58, 232-233, 237, 357-358, 362
R/survival_biomarkers_subgroups.R            136      10  92.65%   117-122, 228-231
R/survival_coxph_pairwise.R                  154       9  94.16%   55-56, 124, 138, 145, 149, 288, 290-291
R/survival_duration_subgroups.R              250      15  94.00%   124-129, 268-273, 286, 288-289
R/survival_time.R                            128       1  99.22%   261
R/survival_timepoint.R                       153       2  98.69%   320, 322
R/utils_checkmate.R                           68       0  100.00%
R/utils_default_stats_formats_labels.R       201       0  100.00%
R/utils_factor.R                              87       1  98.85%   99
R/utils_ggplot.R                             110       0  100.00%
R/utils_grid.R                               126       5  96.03%   164, 279-286
R/utils_rtables.R                            125       9  92.80%   39, 46, 414-415, 537-541
R/utils_split_funs.R                          52       2  96.15%   82, 94
R/utils.R                                    141       7  95.04%   131, 134, 137, 141, 150-151, 345
TOTAL                                      12342     594  95.19%

Diff against main

Filename              Stmts    Miss  Cover
------------------  -------  ------  --------
R/df_explicit_na.R      +15       0  +100.00%
TOTAL                   +15       0  +0.01%

Results for commit: b60d27f

Minimum allowed coverage is 80%

♻️ This comment has been updated with latest results

@github-actions

github-actions Bot commented Jul 12, 2026

Copy link
Copy Markdown
Contributor

Unit Tests Summary

    1 files     85 suites   1m 40s ⏱️
  931 tests   922 ✅   9 💤 0 ❌
2 313 runs  1 598 ✅ 715 💤 0 ❌

Results for commit b60d27f.

♻️ This comment has been updated with latest results.

@github-actions

github-actions Bot commented Jul 12, 2026

Copy link
Copy Markdown
Contributor

Unit Test Performance Difference

Additional test case details
Test Suite $Status$ Time on main $±Time$ Test Case
df_explicit_na 👶 $+0.03$ Check_new_parameter_errors
df_explicit_na 👶 $+0.01$ factor_as_factor_FALSE_preserves_existing_factor_levels_original_behavior_
df_explicit_na 👶 $+0.01$ factor_as_factor_re_encodes_existing_factor_levels_using_factor_level_method
df_explicit_na 👶 $+0.01$ factor_level_last_pattern_NULL_does_not_change_level_order
df_explicit_na 👶 $+0.01$ factor_level_last_pattern_combined_with_na_level_na_level_stays_last
df_explicit_na 👶 $+0.01$ factor_level_last_pattern_moves_matching_levels_to_end
df_explicit_na 👶 $+0.01$ factor_level_method_data_preserves_first_appearance_order
df_explicit_na 👶 $+0.01$ factor_level_method_sort_auto_gives_same_result_as_default
df_explicit_na 👶 $+0.01$ factor_level_method_sort_radix_uses_byte_order_sort_uppercase_before_lowercase_

Results for commit 4c3ebec

♻️ This comment has been updated with latest results.

@shajoezhu shajoezhu closed this Jul 13, 2026
@github-actions github-actions Bot locked and limited conversation to collaborators Jul 13, 2026
@shajoezhu shajoezhu deleted the feature/df-explicit-na-factor-level-method branch July 13, 2026 01:00
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants