Tidy Data

Pivoting

Long to wide form

table4a_long <- table4a %>%
    
    pivot_longer(cols = c(`1999`, `2000`),
                 names_to = "year",
                 values_to = "cases")

Wide to long form

table4a_long %>%
    
    pivot_wider(names_from = year,
                values_from = cases)
## # A tibble: 3 × 3
##   country     `1999` `2000`
##   <chr>        <int>  <int>
## 1 Afghanistan    745   2666
## 2 Brazil       37737  80488
## 3 China       212258 213766

Separating and Uniting

Separate a column

table3_sep <- table3 %>%
    
    separate(col = rate, into = c("cases", "population"))

Unite two columns

table3_sep %>%
    
    unite(col = "rate", (cases:population), sep = "/",)
## # A tibble: 6 × 3
##   country      year rate             
##   <chr>       <int> <chr>            
## 1 Afghanistan  1999 745/19987071     
## 2 Afghanistan  2000 2666/20595360    
## 3 Brazil       1999 37737/172006362  
## 4 Brazil       2000 80488/174504898  
## 5 China        1999 212258/1272915272
## 6 China        2000 213766/1280428583

Missing Values

bikes <- tibble(
    bike_model     = c("A", "A", "B", "B", "C"),
    material       = c("steel", "aluminium", "steel", "aluminium", "steel"),
    price         = c(100, 200, 300, 400, 500)
    )
bikes %>%
    
    pivot_wider(names_from = bike_model, values_from = price)
## # A tibble: 2 × 4
##   material      A     B     C
##   <chr>     <dbl> <dbl> <dbl>
## 1 steel       100   300   500
## 2 aluminium   200   400    NA
bikes %>%
    
    complete(bike_model, material)
## # A tibble: 6 × 3
##   bike_model material  price
##   <chr>      <chr>     <dbl>
## 1 A          aluminium   200
## 2 A          steel       100
## 3 B          aluminium   400
## 4 B          steel       300
## 5 C          aluminium    NA
## 6 C          steel       500
treatment <- tribble(
    ~ person,           ~ treatment,   ~ response,
    "Derrick Whitmore", 1,             7,
    NA,                 2,             10,
    NA,                 3,             9,
    "Katherine Burke",  1,             4
)

treatment %>%
    
    fill(.direction = "up")
## # A tibble: 4 × 3
##   person           treatment response
##   <chr>                <dbl>    <dbl>
## 1 Derrick Whitmore         1        7
## 2 <NA>                     2       10
## 3 <NA>                     3        9
## 4 Katherine Burke          1        4

Non-Tidy Data

artists <- readr::read_csv('https://raw.githubusercontent.com/rfordatascience/tidytuesday/master/data/2023/2023-01-17/artists.csv')
## Rows: 3162 Columns: 14
## ── Column specification ────────────────────────────────────────────────────────
## Delimiter: ","
## chr (8): artist_name, artist_nationality, artist_nationality_other, artist_g...
## dbl (6): edition_number, year, space_ratio_per_page_total, artist_unique_id,...
## 
## ℹ Use `spec()` to retrieve the full column specification for this data.
## ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.