Universitas : UIN Maulana Malik Ibrahim Malang
Jurusan : Teknik Informatika
Linier Algebra C ’21
Jarang sekali analisis data hanya melibatkan satu tabel data. Jika memiliki banyak tabel data, kita harus menggabungkannya untuk menjawab pertanyaan yang kita minati. Secara kolektif, beberapa tabel data disebut data relasional karena yang penting adalah relasi, bukan hanya kumpulan data individual.
Hubungan selalu didefinisikan antara sepasang tabel. Semua relasi lain dibangun dari ide sederhana ini: relasi tiga tabel atau lebih selalu merupakan properti relasi antara masing-masing pasangan. Terkadang kedua elemen dari pasangan bisa menjadi tabel yang sama. Ini diperlukan jika, kita memiliki tabel orang, dan setiap orang memiliki referensi ke orang tua mereka.
Untuk bekerja dengan data relasional, kita memerlukan kata kerja yang bekerja dengan tabel berpasangan. Ada tiga keluarga kata kerja yang dirancang untuk bekerja dengan data relasional:
1. Mutating joins, yang menambahkan variabel baru ke satu bingkai data dari pengamatan yang cocok di yang lain.
2. Filtering joins, yang memfilter observasi dari satu frame data berdasarkan apakah mereka cocok atau tidak dengan observasi di tabel lain.
3. Set operations, yang memperlakukan pengamatan seolah-olah mereka adalah elemen himpunan.
Tempat paling umum untuk menemukan data relasional adalah dalam sistem manajemen basis data relasional (atau RDBMS), sebuah istilah yang mencakup hampir semua basis data modern. Jika kita pernah menggunakan database sebelumnya, kita pasti pernah menggunakan SQL. Secara umum, dplyr sedikit lebih mudah digunakan daripada SQL, karena dplyr dikhususkan untuk melakukan analisis data: dplyr membuat operasi analisis data umum lebih mudah, dengan mengorbankan membuat lebih sulit untuk melakukan hal-hal lain yang biasanya tidak diperlukan untuk analisis data.
Kita harus menginstal package tidyverse
install.packages(“tidyverse”)
Agar bisa digunakan, kita harus mengaktifkan library tidyverse sebagaimana berikut.
library(tidyverse)
## -- Attaching packages --------------------------------------- tidyverse 1.3.1 --
## v ggplot2 3.3.5 v purrr 0.3.4
## v tibble 3.1.6 v dplyr 1.0.8
## v tidyr 1.2.0 v stringr 1.4.0
## v readr 2.1.2 v forcats 0.5.1
## -- Conflicts ------------------------------------------ tidyverse_conflicts() --
## x dplyr::filter() masks stats::filter()
## x dplyr::lag() masks stats::lag()
Cara kedua yaitu menggunakan data.frame() agar bisa menampilkan data dalam bentuk tabel. Seperti contoh berikut ini.
data_makanan <-data.frame(Makanan = c('Tempe', 'Pisang', 'Tahu', 'Daging Ayam', 'Nasi'), Karbohidrat = c(9, 23, 2, 0, 28), stringsAsFactors = FALSE)
data_protein <-data.frame(Makanan = c('Tempe', 'Pisang', 'Tahu', 'Daging Ayam', 'Nasi'), "Protein" = c(19, 1, 8, 27, 3), stringsAsFactors = FALSE)
Setelah menulis data, kita dapat menampilkannya dalam bentuk tabel dengan cara berikut ini.
data_makanan
## Makanan Karbohidrat
## 1 Tempe 9
## 2 Pisang 23
## 3 Tahu 2
## 4 Daging Ayam 0
## 5 Nasi 28
data_protein
## Makanan Protein
## 1 Tempe 19
## 2 Pisang 1
## 3 Tahu 8
## 4 Daging Ayam 27
## 5 Nasi 3
Setelah membuat data menjadi tabel, kita juga bisa menggabungkannya. Ada beberapa cara untuk menggabungkan dataset, yaitu:
data_makanan %>%
inner_join(data_protein, by = "Makanan")
## Makanan Karbohidrat Protein
## 1 Tempe 9 19
## 2 Pisang 23 1
## 3 Tahu 2 8
## 4 Daging Ayam 0 27
## 5 Nasi 28 3
Menggunakan Outer Join yang akan menyimpan data yang berbeda dengan Inner Join. Terdapat tiga macam Outer Join, yaitu :
A left joint, yaitu Outer Join yang menyimpan semua pengamatan di data_Sekolah.
A right joint, yaitu Outer Join yang menyimpan semua pengamatan di data_Jurusan.
A full joint, yaitu Outer Join yang menyimpan semua pengamatan di data_Sekolah dan data_Jurusan.
Proses joint akan bekerja jika kita menambahkan variabel “value” menjadi data “virtual” pada salah satu tabel tersebut. Hasilnya akan memiliki key yang cocok dan value diisi dengan NA.
data_makanan <-data.frame(Makanan = c('Tempe', 'Pisang', 'Tahu', 'Daging Ayam', 'Nasi'), Karbohidrat = c(9, 23, 2, 0, 28), stringsAsFactors = FALSE)
data_protein <-data.frame(Makanan = c('Tempe', 'Pisang', 'Tahu', 'Daging Ayam', 'Nasi'), "Protein" = c(19, 1, 8, 27, 3), stringsAsFactors = FALSE)
left_join(data_makanan,data_protein)
## Joining, by = "Makanan"
## Makanan Karbohidrat Protein
## 1 Tempe 9 19
## 2 Pisang 23 1
## 3 Tahu 2 8
## 4 Daging Ayam 0 27
## 5 Nasi 28 3
right_join(data_makanan, data_protein)
## Joining, by = "Makanan"
## Makanan Karbohidrat Protein
## 1 Tempe 9 19
## 2 Pisang 23 1
## 3 Tahu 2 8
## 4 Daging Ayam 0 27
## 5 Nasi 28 3
Cara terakhir untuk menggabungkan dua tabel yaitu dengan menggunakan full join yang mencangkup semuanya.
full_join(data_makanan, data_protein)
## Joining, by = "Makanan"
## Makanan Karbohidrat Protein
## 1 Tempe 9 19
## 2 Pisang 23 1
## 3 Tahu 2 8
## 4 Daging Ayam 0 27
## 5 Nasi 28 3
Operasi yang paling banyak digunakan yaitu left join karena operasi ini memungkinkan kita untuk mencari data tambahan yang mempertahankan observasi asli meskipun tidak memiliki kecocokan.
Berikut merupakan gambaran berbagai operasi join menggunakan diagram venn.
Gambar 1: Diagram Venn Berbagai Jenis Join.