Our illustrated penguins are ending their tour with the lubridate package! The photo backdrop is a snowy Antarctic wonderland featuring a Gentoo penguin with outstretched flippers

lubridate: info



lubridate helps us work with dates and times, including

  • a date like August 31, 2022
  • a time like 10:35 am
  • a date-time like 2022-08-31 10:35:00

You can…

  • convert strings or numbers to date-times
  • get and set components of a date-time
  • round date-times
  • add or subtract periods to model events that happen at specific clock times
  • add or substract durations to model a physical process
  • work with time intervals

R4DS book cover


R for Data Science: Ch 16 Dates and times

Package documentation: https://lubridate.tidyverse.org

lubridate: exercise

Recall that palmperpenguins includes raw data as well

penguins_raw <- palmerpenguins::penguins_raw
penguins_raw
# A tibble: 344 × 17
   studyName Sample Num…¹ Species Region Island Stage Indiv…² Clutc…³ `Date Egg`
   <chr>            <dbl> <chr>   <chr>  <chr>  <chr> <chr>   <chr>   <date>    
 1 PAL0708              1 Adelie… Anvers Torge… Adul… N1A1    Yes     2007-11-11
 2 PAL0708              2 Adelie… Anvers Torge… Adul… N1A2    Yes     2007-11-11
 3 PAL0708              3 Adelie… Anvers Torge… Adul… N2A1    Yes     2007-11-16
 4 PAL0708              4 Adelie… Anvers Torge… Adul… N2A2    Yes     2007-11-16
 5 PAL0708              5 Adelie… Anvers Torge… Adul… N3A1    Yes     2007-11-16
 6 PAL0708              6 Adelie… Anvers Torge… Adul… N3A2    Yes     2007-11-16
 7 PAL0708              7 Adelie… Anvers Torge… Adul… N4A1    No      2007-11-15
 8 PAL0708              8 Adelie… Anvers Torge… Adul… N4A2    No      2007-11-15
 9 PAL0708              9 Adelie… Anvers Torge… Adul… N5A1    Yes     2007-11-09
10 PAL0708             10 Adelie… Anvers Torge… Adul… N5A2    Yes     2007-11-09
# … with 334 more rows, 8 more variables: `Culmen Length (mm)` <dbl>,
#   `Culmen Depth (mm)` <dbl>, `Flipper Length (mm)` <dbl>,
#   `Body Mass (g)` <dbl>, Sex <chr>, `Delta 15 N (o/oo)` <dbl>,
#   `Delta 13 C (o/oo)` <dbl>, Comments <chr>, and abbreviated variable names
#   ¹​`Sample Number`, ²​`Individual ID`, ³​`Clutch Completion`

In the raw data, Date Egg is the date that a penguin nest in the study was observed with 1 egg

Check out ?penguins_raw to learn more about the other variables in this dataset

penguins_raw |> select(Species, Sex, `Date Egg`)
# A tibble: 344 × 3
   Species                             Sex    `Date Egg`
   <chr>                               <chr>  <date>    
 1 Adelie Penguin (Pygoscelis adeliae) MALE   2007-11-11
 2 Adelie Penguin (Pygoscelis adeliae) FEMALE 2007-11-11
 3 Adelie Penguin (Pygoscelis adeliae) FEMALE 2007-11-16
 4 Adelie Penguin (Pygoscelis adeliae) <NA>   2007-11-16
 5 Adelie Penguin (Pygoscelis adeliae) FEMALE 2007-11-16
 6 Adelie Penguin (Pygoscelis adeliae) MALE   2007-11-16
 7 Adelie Penguin (Pygoscelis adeliae) FEMALE 2007-11-15
 8 Adelie Penguin (Pygoscelis adeliae) MALE   2007-11-15
 9 Adelie Penguin (Pygoscelis adeliae) <NA>   2007-11-09
10 Adelie Penguin (Pygoscelis adeliae) <NA>   2007-11-09
# … with 334 more rows

We can use year(), month(), and day() to extract different components from Date Egg

In addition, month() provides some options to let us decide whether we want the month displayed as a character string, and whether we want that string abbreviated

penguins_raw |> 
  select(Species, Sex, `Date Egg`) |> 
  mutate(Year = year(`Date Egg`),
         Month = month(`Date Egg`, label = TRUE, abbr = FALSE),
         Day = day(`Date Egg`))
# A tibble: 344 × 6
   Species                             Sex    `Date Egg`  Year Month      Day
   <chr>                               <chr>  <date>     <dbl> <ord>    <int>
 1 Adelie Penguin (Pygoscelis adeliae) MALE   2007-11-11  2007 November    11
 2 Adelie Penguin (Pygoscelis adeliae) FEMALE 2007-11-11  2007 November    11
 3 Adelie Penguin (Pygoscelis adeliae) FEMALE 2007-11-16  2007 November    16
 4 Adelie Penguin (Pygoscelis adeliae) <NA>   2007-11-16  2007 November    16
 5 Adelie Penguin (Pygoscelis adeliae) FEMALE 2007-11-16  2007 November    16
 6 Adelie Penguin (Pygoscelis adeliae) MALE   2007-11-16  2007 November    16
 7 Adelie Penguin (Pygoscelis adeliae) FEMALE 2007-11-15  2007 November    15
 8 Adelie Penguin (Pygoscelis adeliae) MALE   2007-11-15  2007 November    15
 9 Adelie Penguin (Pygoscelis adeliae) <NA>   2007-11-09  2007 November     9
10 Adelie Penguin (Pygoscelis adeliae) <NA>   2007-11-09  2007 November     9
# … with 334 more rows