NEWS


poorman 0.2.9

Breaking changes

New features

Improvements

Grouped operations are now considerably faster. Groups are identified in a single pass over the data rather than by comparing every group against every row, so the cost of group_by() no longer grows with the number of groups. On 100,000 rows with 1,000 groups, group_by() and arrange() are over 100x faster, filter(), mutate() and count() 7-20x faster, group_indices() over 1,000x faster, and grouping by several high cardinality columns no longer exhausts memory.

pivot_longer() and pivot_wider() have been rewritten without stats::reshape() and are now considerably faster and use far less memory. On 100,000 rows by 10 columns, pivot_longer() is over 35x faster; on 1,000,000 rows, pivot_wider() is over 15x faster, and widening to 1,000 columns is over 150x faster and no longer allocates 3.5GB. Both functions now follow tidyr 1.1.

summarise() is now considerably faster on grouped data. Each column is split by group once and the summaries are combined column by column, rather than building and binding a data.frame for each group. On 100,000 rows, summarise() is over 4x faster with 1,000 groups and 5x faster with 10,000 groups, and count() with 26,000 groups is over 7x faster. across() builds its result faster, which also speeds up mutate().

Bug fixes

Grouped operations now match dplyr:

summarise() now matches dplyr:

Selections and pivots now match tidyr:

arrange() now matches dplyr:

poorman 0.2.8 (2026-07-30)

Twelfth CRAN release. This release:

poorman 0.2.7 (2023-10-30)

Eleventh CRAN release. This release:

poorman 0.2.6 (2022-08-17)

Tenth CRAN release.

This update adds the following features:

The following fixes were also implemented:

The CICD pipeline was also fixed such that users can now tests pull requests. The documentation is now built using HTML5.

poorman 0.2.5 (2021-03-28)

Ninth CRAN release.

This update has added the following new features:

The following fixes were also implemented:

The following refactorisations took place:

poorman 0.2.4 (2020-11-27)

Eighth CRAN release.

This update has added the following new features:

The following fixes were also implemented:

Other general refactorisations and improvements of note:

poorman 0.2.3 (2020-11-12)

Seventh CRAN release.

This update has added the following new features:

Fixes:

In addition there have been lots of improvements to documentation and many, many more tests added.

poorman 0.2.2 (2020-10-11)

Sixth CRAN release.

This update has added the following new features:

Performance upgrades and code improvements:

The following bugs have been squashed:

New documentation components have been added:

poorman 0.2.1 (2020-07-01)

Fifth CRAN release.

The update has added the following new features:

There have also been a lot of refactoring for the internals of the package, particularly focusing on context awareness which allows for quite a few of these features (#40, #41) and grouped operations should now be more consistent. This update of course comes with a host of bug fixes including the renaming of multiple columns when using {poorman}'s version of {tidyselect}.

poorman 0.2.0 (2020-05-10)

Fourth CRAN release.

This update has added the following new features:

My thanks go to @msberends for their help on these features!

This update also refactors a lot of the code, hence the minor version bump. This includes:

Finally, 0.2.0 includes many bug fixes:

poorman 0.1.11 (2020-04-22)

Third CRAN release.

This update adds the functions count(), tally(), add_count() and add_tally(). In order to achieve these, the functions n() and desc() have also been added. In addition, group_by() can now add additional groups to an already grouped data.frame.

poorman 0.1.10 (2020-04-13)

Second CRAN release.

This update adds selection helper functions. See ?select_helpers for more information.

The following bugs have been fixed:

poorman 0.1.9 (2020-04-01)

First CRAN release

poorman 0.1.8

This update adds relocate() and consolidates the selection method for select(), rename() and relocate() using select_positions().

poorman 0.1.7

This update adds semi_join() and anti_join().

poorman 0.1.6

This update adds inner_join(), left_join(), right_join() and full_join().

poorman 0.1.5

This update adds a full set of tests for the functions available in v0.1.5.

poorman 0.1.4

This update adds a copy of the pipe (%>%).

poorman 0.1.3

This update adds summarise().

poorman 0.1.2

This update adds rename().

poorman 0.1.1

This update includes group_by() and ungroup() operations.

poorman 0.1.0

This initial version includes the select(), pull(), arrange(), filter(), slice(), mutate() and transmute() functions. See the blog post for more details.