phplyr

dplyr functions

Verification

Scope

Single-table functions, window and summary helpers, expressions, grouping, joins, join_by() conditions, set operations, and rows_*(). Output tables compared with dplyr's.

References

Reference
R 4.6.1 with dplyr 1.2.1
Versions
R 4.6.1, dplyr 1.2.1, PHP 8.5.10, phibble v0.8.0 (9e63ca5)

Data

panel.csv
12 rows: id, g, year, value, score, label. Source
schools.csv
250 rows: school, study_hours, prior_score, score. Source
housing.csv
8 rows: area_m2, bedrooms, monthly_rent. Source
join_x.csv
5 rows: id, k, v. Source
join_y.csv
5 rows: key, k, w. Source
events.csv
5 rows: id, t, amount. Source
periods.csv
5 rows: id, start, end, label. Source
Inline tables
Defined in tests/r/groups.R, tests/r/rows.R, and the matching PHP tests.

Method

Reference results computed in R by tests/r/reference.R, expr.R, groups.R, joins.R, join_by.R, and rows.R and stored in tests/Fixtures/. The same operations run in phplyr in the Pest tests that read those fixtures, which compare every value. Values compared is the number of assertions in a case; a case fails if any assertion fails.

Check
Comparison with a reference implementation
Recorded
2026-11-02, PHP 8.5.10, macOS (arm64), commit 65e6a46

Tolerances

|x − r| ≤ 1e-9 + 1e-9 × max(|r|, 1)

Applies to: Floating-point values

exact equality

Applies to: Column names, row counts and order, strings, integers, booleans, dates, and missing values

x: package value; r: reference value. Absolute error: |x − r|. Relative error: |x − r| / max(|r|, 1). Max errors are over the values a row compares.

Results

79 comparisons: 79 pass, 0 fail, 0 skipped.

All 79 comparisons
Every comparison
Case Quantity Criterion Values Max abs. error Max rel. error Status
windows Table values |x − r| ≤ 1e-9 + 1e-9 × max(|r|, 1) 277 2.7e-15 6.1e-16 pass
ntile_all Values exact equality 49 pass
vectors Table values |x − r| ≤ 1e-9 + 1e-9 × max(|r|, 1) 145 2.7e-15 5.2e-16 pass
filter_group_max Values exact equality 17 pass
filter_between Values exact equality 11 pass
filter_if_any Values exact equality 7 pass
filter_if_all Values exact equality 9 pass
filter_by Values exact equality 13 pass
across_mean Table values |x − r| ≤ 1e-9 + 1e-9 × max(|r|, 1) 13 2.7e-15 5.4e-16 pass
across_list Table values |x − r| ≤ 1e-9 + 1e-9 × max(|r|, 1) 19 2.7e-15 5.4e-16 pass
across_names Values exact equality 13 pass
across_mutate Table values |x − r| ≤ 1e-9 + 1e-9 × max(|r|, 1) 49 0 0 pass
across_mutate_window Values exact equality 49 pass
transmute Values exact equality 49 pass
keep_none Values exact equality 37 pass
add_count Values exact equality 37 pass
tally Values exact equality 10 pass
count_wt Values exact equality 10 pass
add_tally Values exact equality 37 pass
slice_min Values exact equality 11 pass
slice_min_noties Values exact equality 7 pass
slice_max Values exact equality 13 pass
slice_max_prop Values exact equality 7 pass
slice_tail Values exact equality 13 pass
slice_pos Values exact equality 13 pass
slice_neg Values exact equality 19 pass
slice_head_by Values exact equality 7 pass
distinct_keep_all Values exact equality 10 pass
distinct_computed Values exact equality 5 pass
reframe Table values |x − r| ≤ 1e-9 + 1e-9 × max(|r|, 1) 25 0 0 pass
summarise_by Table values |x − r| ≤ 1e-9 + 1e-9 × max(|r|, 1) 13 0 0 pass
arrange_expr Values exact equality 25 pass
arrange_by_group Values exact equality 25 pass
Matches dplyr on output that depends on sorted group keys Values exact equality 90 pass
Selects columns like tidyselect Values exact equality 15 pass
Reports groups like dplyr Values exact equality 4 pass
Matches dplyr for a grouped summary Table values |x − r| ≤ 1e-9 + 1e-9 × max(|r|, 1) 242 5.7e-14 9.4e-16 pass
Matches dplyr count with sort Values exact equality 8 pass
Matches dplyr for a grouped mutate Table values |x − r| ≤ 1e-9 + 1e-9 × max(|r|, 1) 153 4.6e-14 4.6e-15 pass
Matches dplyr for mutate, rename, select and arrange Table values |x − r| ≤ 1e-9 + 1e-9 × max(|r|, 1) 33 3.9e-14 1.5e-15 pass
Matches dplyr distinct Values exact equality 7 pass
Matches dplyr for mutate keep used and unused Table values |x − r| ≤ 1e-9 + 1e-9 × max(|r|, 1) 209 0 0 pass
Matches R for scalar expression helpers Table values |x − r| ≤ 1e-9 + 1e-9 × max(|r|, 1) 97 4.9e-15 2.7e-15 pass
Matches dplyr for equality join_by() Values exact equality 43 pass
Inequality, rolling and overlap joins: ineq Values exact equality 29 pass
Inequality, rolling and overlap joins: ineq_left Values exact equality 36 pass
Inequality, rolling and overlap joins: between Values exact equality 36 pass
Inequality, rolling and overlap joins: closest Values exact equality 36 pass
Inequality, rolling and overlap joins: closest_lt Values exact equality 41 pass
Inequality, rolling and overlap joins: within Values exact equality 91 pass
Inequality, rolling and overlap joins: overlaps Values exact equality 208 pass
Inequality, rolling and overlap joins: semi Values exact equality 13 pass
Inequality, rolling and overlap joins: anti Values exact equality 9 pass
Inequality, rolling and overlap joins: keep_true Values exact equality 41 pass
Joins: left Values exact equality 43 pass
Joins: inner Values exact equality 37 pass
Joins: right Values exact equality 43 pass
Joins: full Values exact equality 49 pass
Joins: keep Values exact equality 50 pass
Joins: first Values exact equality 31 pass
Joins: last Values exact equality 31 pass
Joins: never Values exact equality 43 pass
Joins: semi Values exact equality 17 pass
Joins: anti Values exact equality 5 pass
Joins: anti_never Values exact equality 9 pass
Joins: cross Values exact equality 76 pass
Joins: suffix Values exact equality 37 pass
Joins: by_k Values exact equality 25 pass
Joins: natural Values exact equality 16 pass
Joins: two_keys Values exact equality 26 pass
Joins: key_clash Values exact equality 36 pass
Joins: rowwise_sum Table values |x − r| ≤ 1e-9 + 1e-9 × max(|r|, 1) 13 0 0 pass
Joins: rowwise_mutate Table values |x − r| ≤ 1e-9 + 1e-9 × max(|r|, 1) 13 0 0 pass
Matches dplyr cur_group_id() and cur_group_rows() Values exact equality 134 pass
Keeps empty factor-level groups with _drop: false Table values |x − r| ≤ 1e-9 + 1e-9 × max(|r|, 1) 41 0 0 pass
Matches dplyr set operations Table values |x − r| ≤ 1e-9 + 1e-9 × max(|r|, 1) 67 0 0 pass
Matches dplyr rows_*() Table values |x − r| ≤ 1e-9 + 1e-9 × max(|r|, 1) 92 0 0 pass
Matches case_match and group_cols Values exact equality 38 pass
Matches dplyr 1.2 additions Values exact equality 189 pass

Reproduction

From the repository root
Rscript tests/r/reference.R
Rscript tests/r/expr.R
Rscript tests/r/groups.R
Rscript tests/r/joins.R
Rscript tests/r/join_by.R
Rscript tests/r/rows.R
bin/site-verifications
Raw record
site/verifications/dplyr.json
Input data
tests/Fixtures