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
# From CRAN (in future) #install.packages("dplyrUtil") # Or the the development version from GitHub: # install.packages("devtools") devtools::install_github("bgctw/dplyrUtil")
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.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.