dplyr
What it is
dplyr is a free R package for manipulating data frames and tibbles through a set of code-based verbs. Its core operations add variables with mutate(), choose variables with select(), filter cases with filter(), summarize values with summarise(), and order rows with arrange(). Combining these verbs with group_by() applies operations by group. Two-table verbs support work across datasets, while across() repeats an operation over multiple columns and rowwise() handles operations by row. The programming guide covers data masking, tidy selection, and use in functions or loops. For other data environments, the documentation lists Arrow, dbplyr, dtplyr, duckplyr, and sparklyr. In particular, dbplyr translates dplyr code into SQL for relational databases. The package runs on Linux, macOS, and Windows and has an MIT license. CRAN requires R 4.1.0 or later; installation instructions cover CRAN and a development version from GitHub. The project directs bug reports to GitHub and discussion to the Posit community forum.
For and against
For
- Free R package with an MIT license.
- Core verbs cover common data transformations.
- group_by() supports operations by group.
- dbplyr translates code to SQL for relational databases.
- Available for Linux, macOS, and Windows.
Against
- Requires R version 4.1.0 or later.
- Uses a code-based interface.
The verdict
dplyr provides a consistent set of verbs for transforming tabular data, with grouped operations and tools for multiple tables. Check the R requirement and the available backend options against your workflow.
Who it suits
dplyr suits people learning data transformation in R, as well as users who work with data frames or tibbles. Its documented backends may also suit workflows involving relational databases or larger datasets.
Plans and prices
dplyr
R package for data manipulation · MIT license
Read 7 Oct 2026 · dplyr.tidyverse.org
On the record
- Column operations
- The articles explain repeating an operation across multiple columns with across().dplyr.tidyverse.org · read 7 Oct 2026
- Core operations
- Its core verbs include mutate(), select(), filter(), summarise(), and arrange().dplyr.tidyverse.org · read 7 Oct 2026
- Data backends
- The documentation lists Arrow, dbplyr, dtplyr, duckplyr, and sparklyr as alternative backends.dplyr.tidyverse.org · read 7 Oct 2026
- Database backend
- dbplyr works with data stored in relational databases and translates dplyr code to SQL.dplyr.tidyverse.org · read 7 Oct 2026
- Database integration
- dbplyr translates dplyr code to SQL for data stored in a relational database.dplyr.tidyverse.org · read 7 Oct 2026
- Development version
- The development version can be installed from GitHub using pak.dplyr.tidyverse.org · read 7 Oct 2026
- Grouped data
- group_by() lets users perform operations by group.dplyr.tidyverse.org · read 7 Oct 2026
- Grouping
- The core verbs combine with group_by() to perform operations by group.dplyr.tidyverse.org · read 7 Oct 2026
- Installation
- The documentation provides instructions to install dplyr from CRAN or install its development version from GitHub.dplyr.tidyverse.org · read 7 Oct 2026
- Intended users
- The documentation recommends dplyr to people learning data transformation in R for Data Science.dplyr.tidyverse.org · read 7 Oct 2026
- Joins
- dplyr includes two-table verbs for working with pairs of data frames.dplyr.tidyverse.org · read 7 Oct 2026
- License
- The dplyr site identifies its license as MIT.dplyr.tidyverse.org · read 7 Oct 2026
- Multiple tables
- dplyr provides two-table verbs for working with multiple datasets.dplyr.tidyverse.org · read 7 Oct 2026
- Other backends
- The site lists Arrow for larger-than-memory data, dtplyr for large in-memory datasets, duckplyr for large in-memory datasets, and sparklyr for very large datasets stored in Apache Spark.dplyr.tidyverse.org · read 7 Oct 2026
- Programming
- The programming guide covers data masking and tidy selection, and programming with functions or for loops.dplyr.tidyverse.org · read 7 Oct 2026
- Purpose
- dplyr is a grammar of data manipulation with verbs for common data manipulation tasks.dplyr.tidyverse.org · read 7 Oct 2026
- Row operations
- The articles describe rowwise() for performing operations by row, including simulations and modelling within dplyr verbs.dplyr.tidyverse.org · read 7 Oct 2026
- R requirement
- The CRAN listing says dplyr depends on R version 4.1.0 or later.cran.r-project.org · read 7 Oct 2026
The review
dplyr is an R package for expressing common data-manipulation work as a consistent set of code-based verbs. It is best suited to people learning transformation in R and to experienced R users who want repeatable operations across data frames and tibbles. Choose it for a focused R workflow with grouping, joins, and backend options; look elsewhere if you need a standalone visual tool.
Overview
dplyr organizes routine transformations around composable operations: adding variables, selecting columns, filtering cases, summarizing values, and ordering rows. That shared vocabulary makes multi-step work easier to keep consistent across datasets, while the code interface favors users willing to work in R rather than point-and-click editors. The package requires R 4.1.0 or later and is released under the MIT license.
Key features
Core verbs and grouping
mutate(), select(), filter(), summarise(), and arrange() cover the central transformation jobs: creating variables, choosing variables by name, filtering rows by value, reducing values to summaries, and ordering rows. group_by() combines with those verbs to run operations by group, which suits segmented summaries and per-group transformations without changing the basic workflow. The result is a coherent interface for analysts who prefer readable, sequential R code.
Columns, rows, and multiple tables
across() applies an operation over multiple columns, useful when the same column-wise rule would otherwise be repeated. rowwise() supports one-row-at-a-time work, including simulations and modelling within dplyr verbs. Two-table verbs handle pairs of data frames, extending the same style to joins and other multi-dataset tasks. These additions broaden the package without replacing its central verb-based approach.
Programming and backends
The programming guidance covers data masking, tidy selection, and writing functions or loops around dplyr code. For data beyond a single local table, the project lists several backend choices: Arrow for larger-than-memory data, dtplyr for large in-memory datasets, duckplyr for large in-memory datasets, and sparklyr for very large datasets stored in Apache Spark. dbplyr translates dplyr expressions into SQL for relational databases, making the interface useful when data remains in a database rather than being loaded into R. Backend behavior depends on the selected system, so users should match that option to their data size and execution environment.
Pricing
dplyr is free software. The dplyr plan costs free and includes the R package for data manipulation under the MIT license. There are no paid tiers or seat charges stated, so the package fits individual learners, analysts, and teams that can manage their own R environments. Installation is available from CRAN, while the development version can be installed from GitHub using pak. This is software you run yourself, not a hosted subscription with a trial or renewal term.
Platforms
The package supports Linux, macOS, and Windows. CRAN provides Windows and macOS binaries, and installation instructions also cover CRAN installation generally and development installation from GitHub. Its deployment model is self-hosted, with code as the transformation interface and data frames and tibbles as supported formats.
Who it's for
The documentation specifically recommends dplyr for people learning data transformation in R for Data Science. It also suits R users who need a repeatable vocabulary for grouped calculations, column-wise operations, joins, and database-backed transformations. It is a poor match for readers seeking a standalone application, a visual editing surface, or a workflow outside R; the R 4.1.0-or-later requirement is fundamental rather than optional.
Pros and cons
- Pro: A compact set of familiar verbs covers the most common tabular transformations, giving R users a consistent way to express multi-step work.
- Pro: Grouping, joins, across(), and rowwise() extend the same style to segmented, multi-column, row-level, and multi-table tasks.
- Pro: dbplyr and the other listed backends let the interface reach relational databases, larger-than-memory data, and Spark environments.
- Pro: It is free, MIT-licensed, and offered for all three major desktop operating systems.
- Con: The code-first design and R dependency exclude users who want visual editing or do not already work in R.
- Con: Backend options serve different data sizes and systems, so moving beyond local data requires choosing and learning an appropriate backend.
Alternatives
For a wider comparison of transformation software, see Data Transformation Tools.
- LANSA is the better choice when you need a paid, cross-platform option with Android, iOS, web, Windows, and API support, plus a free plan and trial.
- Bonobo is a free, open-source alternative for Linux, macOS, Windows, or self-hosted deployments.
- data.table is another free R package for Linux, macOS, and Windows that requires base R.
- Ibis is a free Python dataframe library with API, desktop, and self-hosted platform options; backend operation coverage varies.
- jq is a free MIT-licensed command-line option with standalone binaries for Linux, macOS, and Windows.
- Prophecy is a freemium API and web product with a free Starter tier and paid Professional plan.
- Coalesce Catalog is a freemium web/API service offering a free Developer tier and paid Starter tier.
- csvkit is a free MIT-licensed command-line toolkit for Linux, macOS, and Windows.
Verdict
dplyr is the right pick for R learners and practitioners who want one consistent, code-based grammar for transforming local tables, grouped data, multiple datasets, and several scalable backends. Its zero price, MIT license, and broad backend path strengthen that case. Look elsewhere if your work is not in R or you need a visual, standalone application rather than a package embedded in an R environment.