phplyr

tidyr

Verification

Scope

Pivoting, completing, filling, separating, nesting, and unnesting. Output tables compared with tidyr's.

References

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

Data

wide.csv
3 rows: id, name, wk1, wk2, wk3. Source
long.csv
6 rows: id, key, val, w. Source
who.csv
2 rows: country, new_sp_m014, new_sp_f014, new_ep_m65. Source
family.csv
3 rows: family, dob_child1, dob_child2, name_child1, name_child2. Source
strings.csv
4 rows: id, s, tags, code, n. Source
panel.csv
12 rows: id, g, year, value, score, label. Source

Method

Reference results computed in R by tests/r/tidyr.R and stored in tests/Fixtures/. The same operations run in phplyr in tests/TidyrTest.php, 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

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

Every comparison
Case Quantity Criterion Values Max abs. error Max rel. error Status
longer Values exact equality 46 pass
longer_drop Values exact equality 31 pass
longer_sep Values exact equality 31 pass
longer_pattern Values exact equality 37 pass
longer_value Values exact equality 26 pass
wider Table values |x − r| ≤ 1e-9 + 1e-9 × max(|r|, 1) 13 0 0 pass
wider_fill Table values |x − r| ≤ 1e-9 + 1e-9 × max(|r|, 1) 13 0 0 pass
wider_fn Table values |x − r| ≤ 1e-9 + 1e-9 × max(|r|, 1) 16 0 0 pass
wider_multi Table values |x − r| ≤ 1e-9 + 1e-9 × max(|r|, 1) 19 0 0 pass
wider_sort Table values |x − r| ≤ 1e-9 + 1e-9 × max(|r|, 1) 13 0 0 pass
wider_glue Table values |x − r| ≤ 1e-9 + 1e-9 × max(|r|, 1) 13 0 0 pass
complete Table values |x − r| ≤ 1e-9 + 1e-9 × max(|r|, 1) 37 0 0 pass
complete_fill Values exact equality 37 pass
complete_nesting Values exact equality 33 pass
complete_grouped Values exact equality 29 pass
expand Values exact equality 28 pass
expand_nesting Values exact equality 16 pass
crossing Values exact equality 13 pass
fill_down Values exact equality 19 pass
fill_up Values exact equality 19 pass
fill_grouped Table values |x − r| ≤ 1e-9 + 1e-9 × max(|r|, 1) 49 0 0 pass
drop_na_all Values exact equality 7 pass
drop_na_col Values exact equality 13 pass
replace_na Values exact equality 19 pass
uncount Values exact equality 19 pass
unite Table values |x − r| ≤ 1e-9 + 1e-9 × max(|r|, 1) 19 0 0 pass
unite_keep Table values |x − r| ≤ 1e-9 + 1e-9 × max(|r|, 1) 25 0 0 pass
separate Values exact equality 17 pass
separate_merge Values exact equality 17 pass
separate_pos Values exact equality 17 pass
wider_delim Values exact equality 21 pass
wider_delim_sep Values exact equality 21 pass
wider_position Values exact equality 17 pass
wider_regex Values exact equality 17 pass
longer_delim Values exact equality 22 pass
longer_position Values exact equality 34 pass

Reproduction

From the repository root
Rscript tests/r/tidyr.R
bin/site-verifications
Raw record
site/verifications/tidyr.json
Input data
tests/Fixtures