library(tidyr)
library(dplyr)
## 
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union

EXERCISE 1

Table 2

# Ekstrak jumlah kasus TB untuk setiap negara pada setiap tahun.
cases_2 <- table2 %>% filter(type == "cases")

# Ekstrak jumlah populasi yang sesuai untuk setiap negara pada setiap tahun.
population_2   <- table2 %>% filter(type == "population")

# Bagi jumlah kasus dengan jumlah populasi, kemudian kalikan dengan 10.000.
rate_2 <- left_join(cases_2, population_2, 
                    by = c("country", "year")) %>%
  mutate(country, year,
            rate = (count.x / count.y) * 10000)

# Simpan kembali hasil perhitungan tersebut ke dalam struktur data yang sesuai.
rate_2
## # A tibble: 6 × 7
##   country      year type.x count.x type.y        count.y  rate
##   <chr>       <dbl> <chr>    <dbl> <chr>           <dbl> <dbl>
## 1 Afghanistan  1999 cases      745 population   19987071 0.373
## 2 Afghanistan  2000 cases     2666 population   20595360 1.29 
## 3 Brazil       1999 cases    37737 population  172006362 2.19 
## 4 Brazil       2000 cases    80488 population  174504898 4.61 
## 5 China        1999 cases   212258 population 1272915272 1.67 
## 6 China        2000 cases   213766 population 1280428583 1.67

Table 4a + 4b

# Table 4a + Table 4b
# Ekstrak jumlah kasus TB untuk setiap negara pada setiap tahun.
cases <- table4a %>%
  pivot_longer(cols = c(`1999`, `2000`),
               names_to = "year",
               values_to = "cases")

# Ekstrak jumlah populasi yang sesuai untuk setiap negara pada setiap tahun.
population <- table4b %>%
  pivot_longer(cols = c(`1999`, `2000`),
               names_to = "year",
               values_to = "population")

# Bagi jumlah kasus dengan jumlah populasi, kemudian kalikan dengan 10.000.
data_rate <- left_join(cases, population,
                       by = c("country", "year")) %>%
  mutate(rate = (cases / population) * 10000)

# Simpan kembali hasil perhitungan tersebut ke dalam struktur data yang sesuai.
data_rate
## # A tibble: 6 × 5
##   country     year   cases population  rate
##   <chr>       <chr>  <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

Berdasarkan kedua tabel yang dihasilkan, data yang paling mudah digunakan adalah data pada table 4a+4b. Karena pada tabel ini jumlah kasus dan populasi sudah terbagi dalam bentuk tabel terpisah. Sehingga untuk mengekstraknya hanya perlu membuat pivot_longer data tersebut dan menambah variabel cases atau population berdasarkan total setiap negara per tahunnya. Setelah itu data dapat digabungkan, dan dihitung ratenya.

Sedangkan, data yang dihasilkan dari table2 dapat dikatakan paling sulit, karena semua data ada dalam satu kolom “type” dengan nilai “cases” atau “population”. Selain itu, table2 memiliki lebih banyak observasi dan menghasilkan lebih banyak variabel hasil join sehingga, table2 kurang efisien untuk digunakan.

EXERCISE 2

preg <- tribble(
  ~pregnant, ~male, ~female,
  "yes", NA, 10,
  "no", 20, 12
)

# Make it longer 
(preg_tidy <- preg %>%
  pivot_longer(c(male, female),
                            names_to = "gender",
                            values_to = "count"))
## # A tibble: 4 × 3
##   pregnant gender count
##   <chr>    <chr>  <dbl>
## 1 yes      male      NA
## 2 yes      female    10
## 3 no       male      20
## 4 no       female    12
# Missing Value 
(preg_tidy <- preg %>%
    pivot_longer(c(male, female),
                 names_to = "gender",
                 values_to = "count",
                 values_drop_na = TRUE))
## # A tibble: 3 × 3
##   pregnant gender count
##   <chr>    <chr>  <dbl>
## 1 yes      female    10
## 2 no       male      20
## 3 no       female    12

Yang dibutuhkan untuk membuat data pregnant tidy adalah longer dengan menggunakan pivot_longer. Ini akan menghasilkan observasi “male” dan “female” menjadi satu kolom “gender” dan satu kolom “count” sebagai total gender. Hasil tidy data akan punya satu nilai per baris

Variabel yang terbentuk: pregnant, gender, count