The hardware and bandwidth for this mirror is donated by dogado GmbH, the Webhosting and Full Service-Cloud Provider. Check out our Wordpress Tutorial.
If you wish to report a bug, or if you are interested in having us mirror your free-software or open-source project, please feel free to contact us at mirror[@]dogado.de.

poorman 0.3.0

Breaking changes

New features

Improvements

inner_join(), left_join(), right_join() and full_join() have been rewritten without merge(). Rows are matched by sorting y by key once rather than by merge(), and the result is built from the matched row numbers. On 100,000 rows, the joins are 13-16x faster and allocate 2.5x less memory; on 1,000,000 rows, they are 13-20x faster.

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().

mutate() and transmute() are now considerably faster on grouped data. As in summarise(), each column is split by group once and the expressions are evaluated for each group in a data mask, rather than building and binding a data.frame for each group. On 100,000 rows, grouped mutate() is 17x faster with 10 groups, 10x faster with 1,000 groups and 6x faster with 10,000 groups, and allocates 3x less memory; transmute() is 10-20x faster.

filter() is now considerably faster. As in mutate(), the conditions are evaluated for each group in a data mask and the rows are subset once, rather than building and binding a data.frame for each group. On 100,000 rows, grouped filter() is 7-10x faster with 10 groups, 5x faster with 1,000 groups and 3-3.6x faster with 10,000 groups, and allocates about half the memory; on 1,000,000 rows with 10,000 groups, it is 5-6x faster. Ungrouped filter() is 2-3x faster.

slice(), slice_head(), slice_tail(), slice_min(), slice_max(), slice_sample(), distinct() and fill() are now considerably faster on grouped data. The rows to keep are found for each group and the data is subset once, and fill() fills every group in one pass, rather than building and binding a data.frame for each group. On 100,000 rows with 1,000 groups, slice_head() is 28x faster, slice() and slice_min() 3-5x faster, slice_sample() 14x faster, distinct() 20x faster and fill() 79x faster; with 10,000 groups, fill() is over 400x faster.

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

Twelfth CRAN release. This release:

poorman 0.2.7

Eleventh CRAN release. This release:

poorman 0.2.6

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

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

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

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

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

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

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

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

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

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.

These binaries (installable software) and packages are in development.
They may not be fully stable and should be used with caution. We make no claims about them.
Health stats visible at Monitor.