Aktifkan package yang telah diinstall agar dapat digunakan dengan
cara menuliskan perintah seperti berikut.
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
library(tidyverse)
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ forcats 1.0.0 ✔ readr 2.1.4
## ✔ ggplot2 3.4.3 ✔ stringr 1.5.0
## ✔ lubridate 1.9.2 ✔ tibble 3.2.1
## ✔ purrr 1.0.2 ✔ tidyr 1.3.0
## ── 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
Dataset yang digunakan dapat diunduh melalui tautan dibawah ini: Global
Country Information Dataset 2023
Global Country Information Dataset 2023 merupakan dataset
komprehensif ini menyediakan banyak informasi tentang semua negara di
seluruh dunia, yang mencakup berbagai indikator dan atribut. Data ini
mencakup statistik demografi, indikator ekonomi, faktor lingkungan,
metrik perawatan kesehatan, statistik pendidikan, dan masih banyak lagi.
Dengan setiap negara terwakili, dataset ini menawarkan perspektif global
yang lengkap tentang berbagai aspek negara, memungkinkan analisis
mendalam dan perbandingan lintas negara.
Setelah berhasil mengunduh dataset tersebut, pemanggilan data pada
script R dilakukan menggunakan perintah.
country_data <- read_csv("D://S2 STATISTIKA//SEMESTER 1//SAINS DATA//PRAKTIKUM//world-data-2023.csv",show_col_types = FALSE)
DT::datatable(country_data)
Untuk mengetahui jumlah missing value pada dataset digunakan fungsi
summarize() dan sum(is.na())
country_data %>%
summarize(Missing_Value = sum(is.na(country_data)))
## # A tibble: 1 × 1
## Missing_Value
## <int>
## 1 337
Untuk menghapus missing data pada dataset, digunakan fungsi
drop_na(). Dataset yang telah terhapus missing valuenya disimpan dalam
country_baru. Selanjutnya untuk menunjukkan bahwa missing data sudah
terhapus digunakan fungsi summarize () dan sum(is.na()) pada dataset
country_baru.
country_baru <- country_data %>%
drop_na()
country_baru %>%
summarize(sum(is.na(country_baru)))
## # A tibble: 1 × 1
## `sum(is.na(country_baru))`
## <int>
## 1 0
Untuk memilih kolom pada dataset yang berbentuk persentase dan nilai
mata uang dollar US yang bertipe data chr, digunakan fungsi colnames()
dan grep(). Selanjutnya, untuk mengubah tipe data pada kolom tersebut
menjadi dbl, digunakan fungsi mutate() dan across(). Data yang tipe
kolomnya telah berubah menjadi dbl kemudian disimpan dalam data_baru.
Untuk melihat hasil perubahan tipe data dari chr menjadi dbl, digunakan
fungsi glimpse() pada data_baru
data_baru <- country_baru %>%
mutate(across(.col=c(colnames(country_data[grep("%",country_data)])),
.fns = ~as.numeric(sub("%", "", .))/100)) %>%
mutate(across(.col=c(colnames(country_data[grep("\\$",country_data)])),
.fns = ~ as.numeric(gsub("[^0-9.]", "", .))))
glimpse(data_baru)
## Rows: 110
## Columns: 35
## $ Country <chr> "Afghanistan", "Albania", …
## $ `Density\n(P/Km2)` <dbl> 60, 105, 18, 26, 17, 104, …
## $ Abbreviation <chr> "AF", "AL", "DZ", "AO", "A…
## $ `Agricultural Land( %)` <dbl> 0.581, 0.431, 0.174, 0.475…
## $ `Land Area(Km2)` <dbl> 652230, 28748, 2381741, 12…
## $ `Armed Forces size` <dbl> 323000, 9000, 317000, 1170…
## $ `Birth Rate` <dbl> 32.49, 11.78, 24.28, 40.73…
## $ `Calling Code` <dbl> 93, 355, 213, 244, 54, 374…
## $ `Capital/Major City` <chr> "Kabul", "Tirana", "Algier…
## $ `Co2-Emissions` <dbl> 8672, 4536, 150006, 34693,…
## $ CPI <dbl> 149.90, 119.05, 151.36, 26…
## $ `CPI Change (%)` <dbl> 0.023, 0.014, 0.020, 0.171…
## $ `Currency-Code` <chr> "AFN", "ALL", "DZD", "AOA"…
## $ `Fertility Rate` <dbl> 4.47, 1.62, 3.02, 5.52, 2.…
## $ `Forested Area (%)` <dbl> 0.021, 0.281, 0.008, 0.463…
## $ `Gasoline Price` <dbl> 0.70, 1.36, 0.28, 0.97, 1.…
## $ GDP <dbl> 1.910135e+10, 1.527808e+10…
## $ `Gross primary education enrollment (%)` <dbl> 1.040, 1.070, 1.099, 1.135…
## $ `Gross tertiary education enrollment (%)` <dbl> 0.097, 0.550, 0.514, 0.093…
## $ `Infant mortality` <dbl> 47.9, 7.8, 20.1, 51.6, 8.8…
## $ `Largest city` <chr> "Kabul", "Tirana", "Algier…
## $ `Life expectancy` <dbl> 64.5, 78.5, 76.7, 60.8, 76…
## $ `Maternal mortality ratio` <dbl> 638, 15, 112, 241, 39, 26,…
## $ `Minimum wage` <dbl> 0.43, 1.12, 0.95, 0.71, 3.…
## $ `Official language` <chr> "Pashto", "Albanian", "Ara…
## $ `Out of pocket health expenditure` <dbl> 0.784, 0.569, 0.281, 0.334…
## $ `Physicians per thousand` <dbl> 0.28, 1.20, 1.72, 0.21, 3.…
## $ Population <dbl> 38041754, 2854191, 4305305…
## $ `Population: Labor force participation (%)` <dbl> 0.489, 0.557, 0.412, 0.775…
## $ `Tax revenue (%)` <dbl> 0.093, 0.186, 0.372, 0.092…
## $ `Total tax rate` <dbl> 0.714, 0.366, 0.661, 0.491…
## $ `Unemployment rate` <dbl> 0.1112, 0.1233, 0.1170, 0.…
## $ Urban_population <dbl> 9797273, 1747593, 31510100…
## $ Latitude <dbl> 33.939110, 41.153332, 28.0…
## $ Longitude <dbl> 67.709953, 20.168331, 1.65…
Berdasarkan hasil pada soal nomor 3, tipe data chr telah berubah
menjadi tipe data dbl untuk kolom yang mengandung nilai dollar. Nilai
pada kolom-kolom tersebut selanjutnya dikonversi ke nilai mata uang
Rupiah menggunakan fungsi mutate(). Nilai tukar Rupiah per tanggal 26
Agustus 2023 adalah sebesar Rp. 15298, sehingga 3 kolom yang mengandung
nilai dollar masing masing dikalikan dengan 15298 dan disimpan dalam
data_baru_2. Hasil konversi ini selanjutnya dapat dilihat menggunakan
fungsi glimpse().
data_baru_2 <- data_baru %>%
mutate(
`Gasoline Price` = `Gasoline Price`*15298,
GDP = GDP*15298,
`Minimum wage`=`Minimum wage`*15298
)
glimpse(data_baru_2)
## Rows: 110
## Columns: 35
## $ Country <chr> "Afghanistan", "Albania", …
## $ `Density\n(P/Km2)` <dbl> 60, 105, 18, 26, 17, 104, …
## $ Abbreviation <chr> "AF", "AL", "DZ", "AO", "A…
## $ `Agricultural Land( %)` <dbl> 0.581, 0.431, 0.174, 0.475…
## $ `Land Area(Km2)` <dbl> 652230, 28748, 2381741, 12…
## $ `Armed Forces size` <dbl> 323000, 9000, 317000, 1170…
## $ `Birth Rate` <dbl> 32.49, 11.78, 24.28, 40.73…
## $ `Calling Code` <dbl> 93, 355, 213, 244, 54, 374…
## $ `Capital/Major City` <chr> "Kabul", "Tirana", "Algier…
## $ `Co2-Emissions` <dbl> 8672, 4536, 150006, 34693,…
## $ CPI <dbl> 149.90, 119.05, 151.36, 26…
## $ `CPI Change (%)` <dbl> 0.023, 0.014, 0.020, 0.171…
## $ `Currency-Code` <chr> "AFN", "ALL", "DZD", "AOA"…
## $ `Fertility Rate` <dbl> 4.47, 1.62, 3.02, 5.52, 2.…
## $ `Forested Area (%)` <dbl> 0.021, 0.281, 0.008, 0.463…
## $ `Gasoline Price` <dbl> 10708.60, 20805.28, 4283.4…
## $ GDP <dbl> 2.922125e+14, 2.337240e+14…
## $ `Gross primary education enrollment (%)` <dbl> 1.040, 1.070, 1.099, 1.135…
## $ `Gross tertiary education enrollment (%)` <dbl> 0.097, 0.550, 0.514, 0.093…
## $ `Infant mortality` <dbl> 47.9, 7.8, 20.1, 51.6, 8.8…
## $ `Largest city` <chr> "Kabul", "Tirana", "Algier…
## $ `Life expectancy` <dbl> 64.5, 78.5, 76.7, 60.8, 76…
## $ `Maternal mortality ratio` <dbl> 638, 15, 112, 241, 39, 26,…
## $ `Minimum wage` <dbl> 6578.14, 17133.76, 14533.1…
## $ `Official language` <chr> "Pashto", "Albanian", "Ara…
## $ `Out of pocket health expenditure` <dbl> 0.784, 0.569, 0.281, 0.334…
## $ `Physicians per thousand` <dbl> 0.28, 1.20, 1.72, 0.21, 3.…
## $ Population <dbl> 38041754, 2854191, 4305305…
## $ `Population: Labor force participation (%)` <dbl> 0.489, 0.557, 0.412, 0.775…
## $ `Tax revenue (%)` <dbl> 0.093, 0.186, 0.372, 0.092…
## $ `Total tax rate` <dbl> 0.714, 0.366, 0.661, 0.491…
## $ `Unemployment rate` <dbl> 0.1112, 0.1233, 0.1170, 0.…
## $ Urban_population <dbl> 9797273, 1747593, 31510100…
## $ Latitude <dbl> 33.939110, 41.153332, 28.0…
## $ Longitude <dbl> 67.709953, 20.168331, 1.65…
Untuk membuat kolom baru yang berisi status country berdasarkan
Unemployment Rate, digunakan fungsi mutate() dan fungsi case_when().
Fungsi case_when() dalam hal ini berperan dalam mengelompokkan country
secara kondisional sesuai dengan Unemployment Rate. Dalam hal dataset
dengan tambahan kolom baru disimpan dalam datanew.
datanew <- data_baru_2 %>%
mutate(country_status = case_when(`Unemployment rate` < 0.01 ~ "rich",
`Unemployment rate` >= 0.00999999 & `Unemployment rate` < 0.05 ~ "developing",
`Unemployment rate` >= 0.04999999 ~ "poor"
))
DT::datatable(datanew)
Untuk menghitung rata rata dan nilai maximum GDP dan CPI berdasarkan
coundry status, digunakan fungsi group_by(). Perhitungan nilai rata rata
dan nilai maksimum dilakukan dengan menggunakan fungsi mean() dan max()
serta summarise(). Untuk menghitung jumlah negara yang termasuk dalam
kategori “rich”, “developing” dan “poor” digunakan fungsi n().
Selanjutnya hasil perhitungan ini disimpan dalam result2.
result2 <- datanew %>%
group_by(country_status) %>%
summarise(
mean_GDP = mean(GDP,na.rm = TRUE),
maximum_GDP = max(GDP,na.rm = TRUE),
mean_CPI = mean(CPI,na.rm = TRUE),
maximum_CPI = max(CPI,na.rm = TRUE),
count = n())
DT::datatable(result2)
Untuk menampilkan hasil nomor 6 dalam format long, digunakan fungsi pivot_longer() dimana dalam hal ini hasilnya disimpan dalam result3
result3 <- result2 %>%
pivot_longer(
cols = starts_with(c("mean","maximum")), # Columns to pivot
names_to = "Mean, Max", # New column name for score types
values_to = "Value" # New column name for scores
)
DT::datatable(result3)