Upgrade to Pro — share decks privately, control downloads, hide ads and more …

P8105: Data Manipulation

Jeff Goldsmith
June 15, 2018
33k

P8105: Data Manipulation

Jeff Goldsmith

June 15, 2018
Tweet

Transcript

  1. 2 • Manipulate (aka transform, manage, clean) is the third

    step in wrangling Data manipulation R for Data Science
  2. 3 • There are a few things you’re going to

    do a lot of when you manipulate data: – Select relevant variables – Filter out unnecessary observations – Create new variables, or change existing ones – Arrange in an easy-to-digest format Major steps
  3. 4 • The dplyr package has specific functions that map

    to each of these major steps – select relevant variables – filter out unnecessary observations – mutate (sorry) new variables, or change existing ones – arrange in an easy-to-digest format dplyr
  4. 4 • The dplyr package has specific functions that map

    to each of these major steps – select relevant variables – filter out unnecessary observations – mutate (sorry) new variables, or change existing ones – arrange in an easy-to-digest format dplyr
  5. 5 • The modularity is intentional – Each function is

    designed to do one thing, and do it well – This is true of other functions as well (and there are several others) • These functions share a structure: the first argument is always a data frame, and the returned objects is always a data frame – tibble comes in, tibble goes out, you can’t explain that … dplyr
  6. 6 • Piping allows you to tie together a sequence

    actions – “New” to R (2014) – Came from the magrittr package; loaded by everything in the tidyverse – Even Newer!! Added to Base R (2021) and updated (2023) Pipes
  7. 6 • Piping allows you to tie together a sequence

    actions – “New” to R (2014) – Came from the magrittr package; loaded by everything in the tidyverse – Even Newer!! Added to Base R (2021) and updated (2023) Pipes
  8. 7 • Sequence of actions to start my days –

    Wake up – Brush teeth – Do data science • In “R”, I can nest these actions: happy_jeff = do_ds(brush_teeth(wake_up(asleep_jeff))) • Alternatively, I could name a bunch of intermediate objects awake_jeff = wake_up(asleep_jeff) clean_teeth_jeff = brush_teeth(awake_jeff) happy_jeff = do_ds(clean_teeth_jeff) Pipes
  9. 8 • Using pipes is easier to read and understand,

    and avoids clutter happy_jeff = wake_up(asleep_jeff) |> brush_teeth() |> do_ds() • Read “|>” as “and then” • The result of one function gets passed as the first argument to the next one by default, although you can be more specific • Works very well with “tibble goes in, tibble comes out” philosophy • You will probably never fully appreciate how great piping is – You should be glad that that’s true Pipes