Hitunglah nilai rate untuk table2 vs table4a + table4b!
#-------------------------------------------------------------------------------
# EXERCISE 1: Hitunglah rate untuk table2 vs table4a + table4b
#-------------------------------------------------------------------------------
#Table2a
library(tidyverse)
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr 1.1.4 ✔ readr 2.1.5
## ✔ forcats 1.0.0 ✔ stringr 1.5.1
## ✔ ggplot2 3.5.2 ✔ tibble 3.2.1
## ✔ lubridate 1.9.4 ✔ tidyr 1.3.1
## ✔ purrr 1.0.2
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag() masks stats::lag()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
table2 <- tibble(
country = c("Afghanistan", "Afghanistan", "Afghanistan", "Afghanistan",
"Brazil", "Brazil", "Brazil", "Brazil",
"China", "China", "China", "China"),
year = c(1999, 1999, 2000, 2000, 1999, 1999, 2000, 2000, 1999, 1999, 2000, 2000),
type = c("cases", "population", "cases", "population",
"cases", "population", "cases", "population",
"cases", "population", "cases", "population"),
count = c(745, 19987071, 2666, 20595360, 37737, 172006362, 80488, 174504898, 212258, 1272915272, 213766, 1280428583)
)
#1. Ekstrak jumlah kasus TB untuk setiap negara pada setiap tahun
t2_cases <- table2 %>%
filter(type == "cases") %>%
rename(cases = count) %>%
select(-type)
#2. Ekstrak jumlah populasi yang sesuai untuk setiap negara pada setiap tahun
t2_population <- table2 %>%
filter(type == "population") %>%
rename(population = count) %>%
select(-type)
#3. Bagi jumlah kasus dengan jumlah populasi lalu kemudian kalikan dengan 10.000
table2_final <- left_join(t2_cases, t2_population, by = c("country", "year")) %>%
mutate(rate = cases / population * 10000)
print(table2_final) #Menyimpan hasil
## # 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
#-------------------------------------------------------------------------------
#1. Table4a
table4a <- tibble(
country = rep(c("Afghanistan", "Brazil", "China"), each = 2),
year = rep(c("1999", "2000"), times = 3),
cases = c(745, 2666, 37737, 80488, 212258, 213766)
)
#2. Table4b
table4b <- tibble(
country = rep(c("Afghanistan", "Brazil", "China"), each = 2),
year = rep(c("1999", "2000"), times = 3),
population = c(19987071, 20595360, 172006362, 174504898, 1272915272, 1280428583)
)
# Langkah 3 & 4: Gabungkan, hitung rate, dan simpan hasilnya
table4_final <- left_join(table4a, table4b, by = c("country", "year")) %>%
mutate(rate = cases / population * 10000)
print(table4_final)
## # 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
Data mana yang paling mudah untuk digunakan? mana yang paling sulit? Jelaskan alasannya!
Yang paling mudah adalah table 2 (menggunakan pivot_wider) alasannya karena, semua informasi (kasus dan populasi) sudah ada dalam satu objek/tabel, hanya butuh satu langkah transformasi yaitu pivot_wider untuk membuat kolom cases dan population berdampingan, dan minim risiko karena datanya satu sumber, risiko salah memasangkan data negara atau tahun sangat kecil.
Yang paling sulit adalah table 4a + table 4b alasannya karena, data terpisah di dua tabel yang berbeda secara fisik, harus merapikan table 4a terlebih dahulu lalu merapikan table 4b (jika formatnya masih wide), dan butuh penggabungan (join) dengan menggunakan left_join() ditahap ini kita harus memastikan “kunci” penggabungannya benar-benar identik dikedua tabel yaitu country dan year.
Tidy the simple it tibble below. Do you need to make it wider or longer? What are the variables?
Menentukan apa saja variabel yang sebenarnya ada dalam data tersebut: 1. pregnant: Status kehamilan (“yes” atau “no”). Ini sudah benar dalam satu kolom. 2. sex/gender: Jenis kelamin (“male” atau “female”). Di tabel asli, ini malah menjadi nama kolom, yang seharusnya adalah nilai dari sebuah variabel. 3. count: Jumlah orang/observasi untuk setiap kombinasi. Ini adalah nilai angka yang tersebar di bawah kolom male dan female.
#-------------------------------------------------------------------------------
#EXERCISE 2
#-------------------------------------------------------------------------------
# Membuat data awal
preg <- tribble(
~pregnant, ~male, ~female,
"yes", NA, 10,
"no", 20, 12
)
# Merapikan data menggunakan pivot_longer
preg_tidy <- preg %>%
pivot_longer(
cols = c(male, female),
names_to = "sex",
values_to = "count"
)
# Menampilkan hasil
print(preg_tidy)
## # A tibble: 4 × 3
## pregnant sex count
## <chr> <chr> <dbl>
## 1 yes male NA
## 2 yes female 10
## 3 no male 20
## 4 no female 12
Do you need to make it wider or longer? Perlu membuatnya menjadi longer (lebih panjang) mengubah kolom male dan female menjadi nilai di dalam satu kolom baru (misalnya kolom sex).
What are the variables? Variabelnya adalah pregnant, sex, dan count
Dengan format output diatas dapat dikatakan data sudah memenuhi syarat Tidy Data. Karena setiap kolom adalah variabel, setiap baris adalah observasi, dan setiap sel adalah nilai tunggal.