README.md

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

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.