CRAN_Status_Badge Travis-CI Build Status

Overview

The dplyrUtil package provides utilities that deal with common task and with unequal factor levels when using dplyr.

Common tasks when using dplyr are

Dealing with unequal factor levels in row-binding or joins

Installation

# From CRAN (in future)
#install.packages("dplyrUtil")

# Or the the development version from GitHub:
# install.packages("devtools")
devtools::install_github("bgctw/dplyrUtil")

Usage

require(dplyr, quietly = TRUE)
require(tidyr, quietly = TRUE)
require(dplyrUtil, quietly = TRUE)

Example of convenient split-map-combine with example dataset:

ds <- tibble(
  food = c("banana","strawberry","pear","bread","corn flakes")
  , kind = factor(c(rep("fruit",3), rep("cereal",2)))
  )
ds
#> # A tibble: 5 x 2
#>   food        kind  
#>   <chr>       <fct> 
#> 1 banana      fruit 
#> 2 strawberry  fruit 
#> 3 pear        fruit 
#> 4 bread       cereal
#> 5 corn flakes cereal
fSub <- function(dss){ mutate(dss, countInKind = paste(kind,1:n()) )}
ds %>% 
  group_by(kind) %>% 
  mapGroups(fSub)
#> # A tibble: 5 x 3
#> # Groups:   kind [2]
#>   food        kind   countInKind
#>   <chr>       <fct>  <chr>      
#> 1 bread       cereal cereal 1   
#> 2 corn flakes cereal cereal 2   
#> 3 banana      fruit  fruit 1    
#> 4 strawberry  fruit  fruit 2    
#> 5 pear        fruit  fruit 3

Compare this to the usual nest-map-unnest idiom:

fSub2 <- function(dss, kind){ mutate(dss, countInKind = paste(kind,1:n()) )}
ds %>% 
  group_by(kind) %>% 
  nest() %>% 
  mutate(data = purrr::map2(data, kind, fSub2)) %>% 
  unnest()
#> # A tibble: 5 x 3
#>   kind   food        countInKind
#>   <fct>  <chr>       <chr>      
#> 1 fruit  banana      fruit 1    
#> 2 fruit  strawberry  fruit 2    
#> 3 fruit  pear        fruit 3    
#> 4 cereal bread       cereal 1   
#> 5 cereal corn flakes cereal 2

See the usecase vignette and other package vignettes (*.md) for examples.



bgctw/dplyrUtil documentation built on Nov. 11, 2020, 12:25 a.m.