title: “Data Wrangling with R” author: “Dwike Reza fahrezy - 15425053” output: html_document ———————
library(tidyverse)
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr 1.2.0 ✔ readr 2.2.0
## ✔ forcats 1.0.1 ✔ stringr 1.6.0
## ✔ ggplot2 4.0.2 ✔ tibble 3.3.1
## ✔ lubridate 1.9.5 ✔ tidyr 1.3.2
## ✔ purrr 1.2.1
## ── 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
library(nycflights13)
Dataset yang digunakan adalah flights dataset dari
package nycflights13.
Data wrangling adalah proses membersihkan, memodifikasi, dan mentransformasikan data agar siap untuk dianalisis. Dalam R, proses ini biasanya dilakukan menggunakan package dplyr yang merupakan bagian dari tidyverse.
Pipe operator %>% digunakan untuk menggabungkan
beberapa langkah analisis menjadi satu alur yang mudah dibaca.
flights %>%
head()
## # A tibble: 6 × 19
## year month day dep_time sched_dep_time dep_delay arr_time sched_arr_time
## <int> <int> <int> <int> <int> <dbl> <int> <int>
## 1 2013 1 1 517 515 2 830 819
## 2 2013 1 1 533 529 4 850 830
## 3 2013 1 1 542 540 2 923 850
## 4 2013 1 1 544 545 -1 1004 1022
## 5 2013 1 1 554 600 -6 812 837
## 6 2013 1 1 554 558 -4 740 728
## # ℹ 11 more variables: arr_delay <dbl>, carrier <chr>, flight <int>,
## # tailnum <chr>, origin <chr>, dest <chr>, air_time <dbl>, distance <dbl>,
## # hour <dbl>, minute <dbl>, time_hour <dttm>
Pipe membaca kode dari kiri ke kanan seperti alur kerja analisis data.
Fungsi filter() digunakan untuk memilih baris data
berdasarkan kondisi tertentu.
flights %>%
filter(carrier == "AS")
## # A tibble: 714 × 19
## year month day dep_time sched_dep_time dep_delay arr_time sched_arr_time
## <int> <int> <int> <int> <int> <dbl> <int> <int>
## 1 2013 1 1 724 725 -1 1020 1030
## 2 2013 1 1 1808 1815 -7 2111 2130
## 3 2013 1 2 722 725 -3 949 1030
## 4 2013 1 2 1818 1815 3 2131 2130
## 5 2013 1 3 724 725 -1 1012 1030
## 6 2013 1 3 1817 1815 2 2121 2130
## 7 2013 1 4 725 725 0 1031 1030
## 8 2013 1 4 1808 1815 -7 2101 2130
## 9 2013 1 5 725 725 0 1011 1030
## 10 2013 1 5 1803 1815 -12 2118 2130
## # ℹ 704 more rows
## # ℹ 11 more variables: arr_delay <dbl>, carrier <chr>, flight <int>,
## # tailnum <chr>, origin <chr>, dest <chr>, air_time <dbl>, distance <dbl>,
## # hour <dbl>, minute <dbl>, time_hour <dttm>
Kode ini memilih semua penerbangan dari maskapai Alaska Airlines.
Fungsi select() digunakan untuk memilih kolom tertentu
dari dataset.
flights %>%
select(year, month, day, dep_delay)
## # A tibble: 336,776 × 4
## year month day dep_delay
## <int> <int> <int> <dbl>
## 1 2013 1 1 2
## 2 2013 1 1 4
## 3 2013 1 1 2
## 4 2013 1 1 -1
## 5 2013 1 1 -6
## 6 2013 1 1 -4
## 7 2013 1 1 -5
## 8 2013 1 1 -3
## 9 2013 1 1 -3
## 10 2013 1 1 -2
## # ℹ 336,766 more rows
Kode ini hanya mengambil beberapa kolom yang diperlukan.
Fungsi mutate() digunakan untuk membuat variabel baru
dari variabel yang sudah ada.
flights %>%
mutate(total_delay = dep_delay + arr_delay)
## # A tibble: 336,776 × 20
## year month day dep_time sched_dep_time dep_delay arr_time sched_arr_time
## <int> <int> <int> <int> <int> <dbl> <int> <int>
## 1 2013 1 1 517 515 2 830 819
## 2 2013 1 1 533 529 4 850 830
## 3 2013 1 1 542 540 2 923 850
## 4 2013 1 1 544 545 -1 1004 1022
## 5 2013 1 1 554 600 -6 812 837
## 6 2013 1 1 554 558 -4 740 728
## 7 2013 1 1 555 600 -5 913 854
## 8 2013 1 1 557 600 -3 709 723
## 9 2013 1 1 557 600 -3 838 846
## 10 2013 1 1 558 600 -2 753 745
## # ℹ 336,766 more rows
## # ℹ 12 more variables: arr_delay <dbl>, carrier <chr>, flight <int>,
## # tailnum <chr>, origin <chr>, dest <chr>, air_time <dbl>, distance <dbl>,
## # hour <dbl>, minute <dbl>, time_hour <dttm>, total_delay <dbl>
Kode ini membuat variabel baru bernama total_delay.
Fungsi summarize() digunakan untuk membuat ringkasan
statistik dari suatu variabel.
flights %>%
summarize(mean_delay = mean(dep_delay, na.rm = TRUE))
## # A tibble: 1 × 1
## mean_delay
## <dbl>
## 1 12.6
Kode ini menghitung rata-rata delay keberangkatan.
Fungsi group_by() digunakan untuk mengelompokkan data
sebelum membuat ringkasan statistik.
flights %>%
group_by(carrier) %>%
summarize(mean_delay = mean(dep_delay, na.rm = TRUE))
## # A tibble: 16 × 2
## carrier mean_delay
## <chr> <dbl>
## 1 9E 16.7
## 2 AA 8.59
## 3 AS 5.80
## 4 B6 13.0
## 5 DL 9.26
## 6 EV 20.0
## 7 F9 20.2
## 8 FL 18.7
## 9 HA 4.90
## 10 MQ 10.6
## 11 OO 12.6
## 12 UA 12.1
## 13 US 3.78
## 14 VX 12.9
## 15 WN 17.7
## 16 YV 19.0
Kode ini menghitung rata-rata delay untuk setiap maskapai.
Fungsi arrange() digunakan untuk mengurutkan data.
flights %>%
arrange(dep_delay)
## # A tibble: 336,776 × 19
## year month day dep_time sched_dep_time dep_delay arr_time sched_arr_time
## <int> <int> <int> <int> <int> <dbl> <int> <int>
## 1 2013 12 7 2040 2123 -43 40 2352
## 2 2013 2 3 2022 2055 -33 2240 2338
## 3 2013 11 10 1408 1440 -32 1549 1559
## 4 2013 1 11 1900 1930 -30 2233 2243
## 5 2013 1 29 1703 1730 -27 1947 1957
## 6 2013 8 9 729 755 -26 1002 955
## 7 2013 10 23 1907 1932 -25 2143 2143
## 8 2013 3 30 2030 2055 -25 2213 2250
## 9 2013 3 2 1431 1455 -24 1601 1631
## 10 2013 5 5 934 958 -24 1225 1309
## # ℹ 336,766 more rows
## # ℹ 11 more variables: arr_delay <dbl>, carrier <chr>, flight <int>,
## # tailnum <chr>, origin <chr>, dest <chr>, air_time <dbl>, distance <dbl>,
## # hour <dbl>, minute <dbl>, time_hour <dttm>
Untuk mengurutkan dari nilai terbesar:
flights %>%
arrange(desc(dep_delay))
## # A tibble: 336,776 × 19
## year month day dep_time sched_dep_time dep_delay arr_time sched_arr_time
## <int> <int> <int> <int> <int> <dbl> <int> <int>
## 1 2013 1 9 641 900 1301 1242 1530
## 2 2013 6 15 1432 1935 1137 1607 2120
## 3 2013 1 10 1121 1635 1126 1239 1810
## 4 2013 9 20 1139 1845 1014 1457 2210
## 5 2013 7 22 845 1600 1005 1044 1815
## 6 2013 4 10 1100 1900 960 1342 2211
## 7 2013 3 17 2321 810 911 135 1020
## 8 2013 6 27 959 1900 899 1236 2226
## 9 2013 7 22 2257 759 898 121 1026
## 10 2013 12 5 756 1700 896 1058 2020
## # ℹ 336,766 more rows
## # ℹ 11 more variables: arr_delay <dbl>, carrier <chr>, flight <int>,
## # tailnum <chr>, origin <chr>, dest <chr>, air_time <dbl>, distance <dbl>,
## # hour <dbl>, minute <dbl>, time_hour <dttm>
Join digunakan untuk menggabungkan dua dataset berdasarkan kolom yang sama.
flights %>%
inner_join(airlines, by = "carrier")
## # A tibble: 336,776 × 20
## year month day dep_time sched_dep_time dep_delay arr_time sched_arr_time
## <int> <int> <int> <int> <int> <dbl> <int> <int>
## 1 2013 1 1 517 515 2 830 819
## 2 2013 1 1 533 529 4 850 830
## 3 2013 1 1 542 540 2 923 850
## 4 2013 1 1 544 545 -1 1004 1022
## 5 2013 1 1 554 600 -6 812 837
## 6 2013 1 1 554 558 -4 740 728
## 7 2013 1 1 555 600 -5 913 854
## 8 2013 1 1 557 600 -3 709 723
## 9 2013 1 1 557 600 -3 838 846
## 10 2013 1 1 558 600 -2 753 745
## # ℹ 336,766 more rows
## # ℹ 12 more variables: arr_delay <dbl>, carrier <chr>, flight <int>,
## # tailnum <chr>, origin <chr>, dest <chr>, air_time <dbl>, distance <dbl>,
## # hour <dbl>, minute <dbl>, time_hour <dttm>, name <chr>
Kode ini menggabungkan dataset flights dengan dataset
airlines.
Contoh penggunaan beberapa fungsi sekaligus dalam satu pipeline.
flights %>%
filter(dep_delay > 60) %>%
group_by(carrier) %>%
summarize(avg_delay = mean(dep_delay, na.rm = TRUE)) %>%
arrange(desc(avg_delay))
## # A tibble: 16 × 2
## carrier avg_delay
## <chr> <dbl>
## 1 HA 243.
## 2 VX 146.
## 3 FL 145.
## 4 F9 145.
## 5 DL 136.
## 6 WN 132.
## 7 9E 124.
## 8 AA 123.
## 9 UA 121.
## 10 AS 118.
## 11 EV 118.
## 12 B6 118.
## 13 YV 117.
## 14 US 116.
## 15 MQ 115.
## 16 OO 109.
Langkah yang dilakukan: