##Tidy data
# Compute rate per 10,000
table1 %>%
mutate(rate = cases / population * 10000)
## # A tibble: 6 × 5
## country year cases population rate
## <chr> <dbl> <dbl> <dbl> <dbl>
## 1 Afghanistan 1999 745 19987071 0.373
## 2 Afghanistan 2000 2666 20595360 1.29
## 3 Brazil 1999 37737 172006362 2.19
## 4 Brazil 2000 80488 174504898 4.61
## 5 China 1999 212258 1272915272 1.67
## 6 China 2000 213766 1280428583 1.67
# Compute cases per year
table1 %>%
count(year, wt = cases)
## # A tibble: 2 × 2
## year n
## <dbl> <dbl>
## 1 1999 250740
## 2 2000 296920
# Visualize changes over time
library(ggplot2)
ggplot(table1, aes(year, cases)) +
geom_line(aes(group = country), colour = "grey50") +
geom_point(aes(colour = country))
table4a %>%
pivot_longer(cols = c('1999', '2000'),
names_to = "year",
values_to = "cases")
## # A tibble: 6 × 3
## country year cases
## <chr> <chr> <dbl>
## 1 Afghanistan 1999 745
## 2 Afghanistan 2000 2666
## 3 Brazil 1999 37737
## 4 Brazil 2000 80488
## 5 China 1999 212258
## 6 China 2000 213766
table4a_long <- table4a %>%
pivot_longer(cols = c('1999', '2000'),
names_to = "year",
values_to = "cases")
table4a_long %>%
pivot_wider(names_from = year, values_from = cases)
## # A tibble: 3 × 3
## country `1999` `2000`
## <chr> <dbl> <dbl>
## 1 Afghanistan 745 2666
## 2 Brazil 37737 80488
## 3 China 212258 213766
table3 %>%
separate(col = rate, into = c("cases","population"))
## # A tibble: 6 × 4
## country year cases population
## <chr> <dbl> <chr> <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
table3_sep <- table3 %>%
separate(col = rate, into = c("cases","population"))
table3_sep %>%
unite(col = "rate", c(cases:population), sep = "/", )
## # A tibble: 6 × 3
## country year rate
## <chr> <dbl> <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
stocks <- tibble(
year = c(2015, 2015, 2015, 2015, 2016, 2016, 2016),
qtr = c( 1, 2, 3, 4, 2, 3, 4),
return = c(1.88, 0.59, 0.35, NA, 0.92, 0.17, 2.66)
)
stocks %>%
pivot_wider(names_from = year, values_from = return)
## # A tibble: 4 × 3
## qtr `2015` `2016`
## <dbl> <dbl> <dbl>
## 1 1 1.88 NA
## 2 2 0.59 0.92
## 3 3 0.35 0.17
## 4 4 NA 2.66
bikes <- tibble(
bike_model = c("A", "A", "B", "B", "C"),
material = c("steel", "aluminum", "steel", "aluminum", "steel"),
price = c(100, 200, 300, 400, 500)
)
bikes
## # A tibble: 5 × 3
## bike_model material price
## <chr> <chr> <dbl>
## 1 A steel 100
## 2 A aluminum 200
## 3 B steel 300
## 4 B aluminum 400
## 5 C steel 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 aluminum 200 400 NA
bikes %>%
complete(bike_model, material)
## # A tibble: 6 × 3
## bike_model material price
## <chr> <chr> <dbl>
## 1 A aluminum 200
## 2 A steel 100
## 3 B aluminum 400
## 4 B steel 300
## 5 C aluminum 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(person, .direction = "down")
## # A tibble: 4 × 3
## person treatment response
## <chr> <dbl> <dbl>
## 1 Derrick Whitmore 1 7
## 2 Derrick Whitmore 2 10
## 3 Derrick Whitmore 3 9
## 4 Katherine Burke 1 4
treatment %>%
fill(person, .direction = "up")
## # A tibble: 4 × 3
## person treatment response
## <chr> <dbl> <dbl>
## 1 Derrick Whitmore 1 7
## 2 Katherine Burke 2 10
## 3 Katherine Burke 3 9
## 4 Katherine Burke 1 4