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
# 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 + 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.
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