dplyr v0.7.6


Monthly downloads



A Grammar of Data Manipulation

A fast, consistent tool for working with data frame like objects, both in memory and out of memory.



Status AppVeyor Build
Status CRAN\_Status\_Badge Coverage


dplyr is a grammar of data manipulation, providing a consistent set of verbs that help you solve the most common data manipulation challenges:

  • mutate() adds new variables that are functions of existing variables
  • select() picks variables based on their names.
  • filter() picks cases based on their values.
  • summarise() reduces multiple values down to a single summary.
  • arrange() changes the ordering of the rows.

These all combine naturally with group_by() which allows you to perform any operation “by group”. You can learn more about them in vignette("dplyr"). As well as these single-table verbs, dplyr also provides a variety of two-table verbs, which you can learn about in vignette("two-table").

dplyr is designed to abstract over how the data is stored. That means as well as working with local data frames, you can also work with remote database tables, using exactly the same R code. Install the dbplyr package then read vignette("databases", package = "dbplyr").

If you are new to dplyr, the best place to start is the data import chapter in R for data science.


# The easiest way to get dplyr is to install the whole tidyverse:

# Alternatively, install just dplyr:

# Or the development version from GitHub:
# install.packages("devtools")

If you encounter a clear bug, please file a minimal reproducible example on github. For questions and other discussion, please use the manipulatr mailing list.



starwars %>% 
  filter(species == "Droid")
#> # A tibble: 5 x 13
#>   name  height  mass hair_color skin_color  eye_color birth_year gender
#>   <chr>  <int> <dbl> <chr>      <chr>       <chr>          <dbl> <chr> 
#> 1 C-3PO    167   75. <NA>       gold        yellow          112. <NA>  
#> 2 R2-D2     96   32. <NA>       white, blue red              33. <NA>  
#> 3 R5-D4     97   32. <NA>       white, red  red              NA  <NA>  
#> 4 IG-88    200  140. none       metal       red              15. none  
#> 5 BB8       NA   NA  none       none        black            NA  none  
#> # ... with 5 more variables: homeworld <chr>, species <chr>, films <list>,
#> #   vehicles <list>, starships <list>

starwars %>% 
  select(name, ends_with("color"))
#> # A tibble: 87 x 4
#>   name           hair_color skin_color  eye_color
#>   <chr>          <chr>      <chr>       <chr>    
#> 1 Luke Skywalker blond      fair        blue     
#> 2 C-3PO          <NA>       gold        yellow   
#> 3 R2-D2          <NA>       white, blue red      
#> 4 Darth Vader    none       white       yellow   
#> 5 Leia Organa    brown      light       brown    
#> # ... with 82 more rows

starwars %>% 
  mutate(name, bmi = mass / ((height / 100)  ^ 2)) %>%
  select(name:mass, bmi)
#> # A tibble: 87 x 4
#>   name           height  mass   bmi
#>   <chr>           <int> <dbl> <dbl>
#> 1 Luke Skywalker    172   77.  26.0
#> 2 C-3PO             167   75.  26.9
#> 3 R2-D2              96   32.  34.7
#> 4 Darth Vader       202  136.  33.3
#> 5 Leia Organa       150   49.  21.8
#> # ... with 82 more rows

starwars %>% 
#> # A tibble: 87 x 13
#>   name    height  mass hair_color skin_color  eye_color  birth_year gender
#>   <chr>    <int> <dbl> <chr>      <chr>       <chr>           <dbl> <chr> 
#> 1 Jabba …    175 1358. <NA>       green-tan,… orange          600.  herma…
#> 2 Grievo…    216  159. none       brown, whi… green, ye…       NA   male  
#> 3 IG-88      200  140. none       metal       red              15.0 none  
#> 4 Darth …    202  136. none       white       yellow           41.9 male  
#> 5 Tarfful    234  136. brown      brown       blue             NA   male  
#> # ... with 82 more rows, and 5 more variables: homeworld <chr>,
#> #   species <chr>, films <list>, vehicles <list>, starships <list>

starwars %>%
  group_by(species) %>%
    n = n(),
    mass = mean(mass, na.rm = TRUE)
  ) %>%
  filter(n > 1)
#> # A tibble: 9 x 3
#>   species      n  mass
#>   <chr>    <int> <dbl>
#> 1 Droid        5  69.8
#> 2 Gungan       3  74.0
#> 3 Human       35  82.8
#> 4 Kaminoan     2  88.0
#> 5 Mirialan     2  53.1
#> # ... with 4 more rows

Please note that this project is released with a Contributor Code of Conduct. By participating in this project you agree to abide by its terms.

Functions in dplyr

Name Description
compute Force computation of a database query
case_when A general vectorised if
desc Descending order
cumall Cumulativate versions of any, all, and mean
n The number of observations in the current group.
distinct Select distinct/unique rows
do Do anything
sample Sample n rows from a table
ident Flag a character vector as SQL identifiers
groups Return grouping variables
dim_desc Describing dimensions
group_indices Group id.
group_size Calculate group sizes.
filter_all Filter within a selection of variables
id Compute a unique numeric id for each unique row in a data frame.
order_by A helper function for ordering window function output
filter Return rows with matching conditions
progress_estimated Progress bar with estimated time.
group_by Group by one or more variables
grouped_df A grouped data frame.
join Join two tbls together
dplyr-package dplyr: a grammar of data manipulation
scoped Operate on a selection of variables
n_distinct Efficiently count the number of unique values in a set of vector
dr_dplyr Dr Dplyr checks your installation for common problems.
group_by_all Group by a selection of variables
explain Explain details of a tbl
lead-lag Lead and lag.
if_else Vectorised if
src_dbi Source for database backends
failwith Fail with specified value.
sql SQL escaping.
join.tbl_df Join data frame tbls
location Print the location in memory of a data frame
src Create a "src" object
init_logging Enable internal logging
setops Set operations
na_if Convert values to NA
group_by_prepare Prepare for grouping.
nasa NASA spatio-temporal data
slice Select rows by position
make_tbl Create a "tbl" object
near Compare two numeric vectors
nth Extract the first, last or nth value from a vector
rowwise Group input by rows
storms Storm tracks data
summarise Reduces multiple values down to a single value
src_local A local source.
top_n Select top (or bottom) n rows (by value)
mutate Add new variables
tbl_cube A data cube tbl
vars Select variables
tbl_df Create a data frame tbl.
pull Pull out a single variable
same_src Figure out if two sources are the same (or two tbl have the same source)
ranking Windowed rank functions.
recode Recode values
reexports Objects exported from other packages
select_vars Select variables
starwars Starwars characters
src_tbls List all tbls provided by a source.
select_all Select and rename a selection of variables
summarise_all Summarise and mutate multiple columns.
select Select/rename variables by name
summarise_each Summarise and mutate multiple columns.
tbl_vars List variables provided by a tbl.
tally Count/tally observations by group
tbl Create a table from a data source
tally_ Deprecated SE versions of main verbs.
tidyeval Tidy eval helpers
with_order Run a function with one order, translating result back to original order
as.tbl_cube Coerce an existing data structure into a tbl_cube
auto_copy Copy tables to same source, if necessary
copy_to Copy a local data frame to a remote src
backend_dbplyr Database and SQL generics.
all_equal Flexible equality comparison for data frames
add_rownames Convert row names to an explicit variable.
as.table.tbl_cube Coerce a tbl_cube to other data structures
arrange_all Arrange rows by a selection of variables
common_by Extract out common by variables
bench_compare Evaluate, compare, benchmark operations of a set of srcs.
between Do values in a numeric vector fall in specified range?
bind Efficiently bind multiple data frames by row and column
funs Create a list of functions calls.
all_vars Apply predicate to all variables
coalesce Find first non-missing element
arrange Arrange rows by variables
check_dbplyr dbplyr compatibility functions
band_members Band membership
No Results!

Vignettes of dplyr

No Results!

Last month downloads


Include our badge in your README