Giter Club home page Giter Club logo

dplyrutil's Introduction

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

  • split-map-combine
  • mutate acting only on the rows satisfying the condition
  • left_join with before dropping columns that would be duplicated

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.

dplyrutil's People

Contributors

bgctw avatar progtw avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.