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

Memanggil Data

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)

Nomor 1

Melihat Missing Value pada Dataset

  1. Dalam R missing data biasanya ditandai dengan NA, hitung berapa banyak missing value yang ada pada dataset!

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

Nomor 2

Menghapus Missing Value

  1. Hapus semua missing data dan tunjukkan bahwa semua missing data sudah terhapus!

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

Nomor 3

Mengubah Tipe Data chr Menjadi dbl

  1. Dalam dataset tersebut terdapat beberapa kolom yang berbentuk persentase dan nilai mata uang dollar US yang bertipe data chr. Gunakan fungsi mutate dan across untuk mengubah tipe data kolom tersebut menjadi dbl. Tunjukkan hasilnya dengan fungsi glimpse!

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…

Nomor 4

Mengkonversi Nilai Mata Uang Dollar ke Nilai Mata Uang Rupiah dengan Tipe Data dbl

  1. Konversi nilai mata uang dalam bentuk dollar ke nilai mata uang Rupiah dengan tipe data dbl!

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…

Nomor 5

Membuat Kolom Country Status dengan Kategori “rich”,“developing”, “poor” berdasarkan nilai Unemployment Rate

  1. Buatlah kolom country_status yang berisi kategori “rich”,“developing”, “poor”. Kategori ini didapatkan dengan kriteria sebagai berikut: jika Unemployment rate kurang dari 1% maka negara tersebut merupakan negara “rich”, jika Unemployment rate lebih besar dari 0.999999% dan kurang dari 5% maka negara tersebut merupakan negara “developing”. Kemudian jika Unemployment rate lebih besar dari 4.999999% maka negara tersebut merupakan negara”poor”.

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)

Nomor 6

Mencari Rata-Rata dan Nilai Maximum GDP dan CPI Berdasarkan Country Status dan Menghitung Jumlah Negara pada Setiap Kategori

  1. Hitunglah rata-rata dan nilai maximum GDP dan CPI berdasarkan country status! Kemudian hitung juga berapa banyak negara yang termasuk dalam kategori “rich”,“developing”, “poor”.

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)

Nomor 7

Menampilkan Hasil Nomor 6 dalam Format long

  1. Tampilkan hasil nomor 6 dalam format long!

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)