Relational data set merupakan kumpulan data berbentuk tabel yang saling memiliki hubungan. Sebuah data set biasanya tersiri dari dua variable yakni variable key dan variable value. Variable key untuk mencocokkan baris pada tabel data dan variable value digunakan menjelaskan deskripsi tentang nilai pada variabel key pada tabel data set tersebut.
Untuk menciptakan tabel data set x dan tabel dataset y dengan menggunakan fungsi trible(), fungsi ini digunakan untuk mnegatur tata letak baris demi baris yang lebih mudah dibaca. Ini berguna untuk tabel data kecil di mana keterbacaan nya penting.
Untuk menghubungkan kedua tabel data set tersebut maka sebagai acuan untuk mencocokkan adalah pada variabel “key”. Dalam contoh ini, kita akan mencocokan antara variabel “key” pada tabel x, dengan variabel “key” pada tabel y, kedua tabel tersebut digeneralisasi secara langsung ke beberapa key dan ke beberapa value.
Untuk mendapatkan gabungan kedua tabel adalah dengan cara menghubungkan setiap baris di tabel x yang ke nol, satu, kedua atau lebih, dengan setiap baris di tabel y. Pada diagram berikut menunjukkan setiap potensi kecocokan sebagai perpotongan dari sepasang garis.
library(tidyverse)
## Warning: package 'tidyverse' was built under R version 4.1.3
## -- 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.7
## 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()
library(dplyr)
x <- tribble(
~key, ~val_x, ~val_x2,
1, "Statistik", "A",
2, "Kewarganegaraan", "B+",
3, "Linier Algebra", "A",
4, "Teosofi", "B+",
5, "Sejarah Peradaban Islam", "A"
)
y <- tribble(
~key, ~val_y,~val_y2,
1, "PBO", "A",
2, "Elektronik Digital", "A",
3, "Praktikum Elektronika Digital", "A",
4, "Praktikum PBO", "A",
5, " "," "
)
x
## # A tibble: 5 x 3
## key val_x val_x2
## <dbl> <chr> <chr>
## 1 1 Statistik A
## 2 2 Kewarganegaraan B+
## 3 3 Linier Algebra A
## 4 4 Teosofi B+
## 5 5 Sejarah Peradaban Islam A
y
## # A tibble: 5 x 3
## key val_y val_y2
## <dbl> <chr> <chr>
## 1 1 "PBO" "A"
## 2 2 "Elektronik Digital" "A"
## 3 3 "Praktikum Elektronika Digital" "A"
## 4 4 "Praktikum PBO" "A"
## 5 5 " " " "
Inner join Jenis gabungan yang paling sederhana adalah Inner join. Inner join adalah proses penggabungan dua tabel, dimana dalam mencocokkan nya menggunakan dengan variabel “key” yang sama pada kedua tabel. (Tepatnya, ini adalah inner equijoin karena kuncinya adalah mencocokkan kedua tabel menggunakan operator persamaan. Karena kebanyakan gabungan yang ada adalah equijoin.) Output dari inner join adalah bingkai data baru yang berisi key, value tabel x, dan value tabel y. Kita dapat menggunakan fungsi tersebut dengan menggunakan library dplyr.
x %>%
inner_join(y, by = "key")
## # A tibble: 5 x 5
## key val_x val_x2 val_y val_y2
## <dbl> <chr> <chr> <chr> <chr>
## 1 1 Statistik A "PBO" "A"
## 2 2 Kewarganegaraan B+ "Elektronik Digital" "A"
## 3 3 Linier Algebra A "Praktikum Elektronika Digital" "A"
## 4 4 Teosofi B+ "Praktikum PBO" "A"
## 5 5 Sejarah Peradaban Islam A " " " "
x <- tribble(
~key, ~val_x, ~val_x2,
1, "Statistik", "A",
2, "Kewarganegaraan", "B+",
3, "Linier Algebra", "A",
4, "Teosofi", "B+",
5, "Sejarah Peradaban Islam", "A"
)
y <- tribble(
~key, ~val_y,~val_y2,
1, "PBO", "A",
2, "Elektronik Digital", "A",
3, "Praktikum Elektronika Digital", "A",
4, "Praktikum PBO", "A",
6, "PKPBA", "A"
)
x
## # A tibble: 5 x 3
## key val_x val_x2
## <dbl> <chr> <chr>
## 1 1 Statistik A
## 2 2 Kewarganegaraan B+
## 3 3 Linier Algebra A
## 4 4 Teosofi B+
## 5 5 Sejarah Peradaban Islam A
y
## # A tibble: 5 x 3
## key val_y val_y2
## <dbl> <chr> <chr>
## 1 1 PBO A
## 2 2 Elektronik Digital A
## 3 3 Praktikum Elektronika Digital A
## 4 4 Praktikum PBO A
## 5 6 PKPBA A
Outer joins Inner join akan menyimpan data sesuai dengan variabel “key” sama dan variabel “value” yang muncul di kedua tabel. Outer joins akan menyimpan data yang berbeda dengan inner joint, dimana data yang sesuai dan muncul di salah satu tabel. Ada tiga jenis Outer joins: 1. A left joint adalah menyimpan semua pengamatan di x. 2, A right joint adalah menyimpan semua pengamatan di y. 3. A full joint adalah menjaga semua pengamatan di x dan y. Proses joint ini bekerja dengan menambahkan variabel “value” menjadi data “virtual” pada salah satu tabel. Hasil nya dapat memiliki key yang selalu cocok (jika tidak ada kunci lain yang cocok), dan value diisi dengan NA.
left_join(x,y)
## Joining, by = "key"
## # A tibble: 5 x 5
## key val_x val_x2 val_y val_y2
## <dbl> <chr> <chr> <chr> <chr>
## 1 1 Statistik A PBO A
## 2 2 Kewarganegaraan B+ Elektronik Digital A
## 3 3 Linier Algebra A Praktikum Elektronika Digital A
## 4 4 Teosofi B+ Praktikum PBO A
## 5 5 Sejarah Peradaban Islam A <NA> <NA>
right_join(x,y)
## Joining, by = "key"
## # A tibble: 5 x 5
## key val_x val_x2 val_y val_y2
## <dbl> <chr> <chr> <chr> <chr>
## 1 1 Statistik A PBO A
## 2 2 Kewarganegaraan B+ Elektronik Digital A
## 3 3 Linier Algebra A Praktikum Elektronika Digital A
## 4 4 Teosofi B+ Praktikum PBO A
## 5 6 <NA> <NA> PKPBA A
full_join(x,y)
## Joining, by = "key"
## # A tibble: 6 x 5
## key val_x val_x2 val_y val_y2
## <dbl> <chr> <chr> <chr> <chr>
## 1 1 Statistik A PBO A
## 2 2 Kewarganegaraan B+ Elektronik Digital A
## 3 3 Linier Algebra A Praktikum Elektronika Digital A
## 4 4 Teosofi B+ Praktikum PBO A
## 5 5 Sejarah Peradaban Islam A <NA> <NA>
## 6 6 <NA> <NA> PKPBA A
x <- tribble(
~key, ~val_x, ~val_x2,
1, "Statistik", "A",
2, "Kewarganegaraan", "B+",
1, "Linier Algebra", "A",
2, "Teosofi", "B+",
2, "Sejarah Peradaban Islam", "A",
1, "PBO", "A",
2, "Elektronik Digital", "A",
2, "Praktikum Elektronika Digital", "A",
2, "Praktikum PBO", "A",
1, "PKPBA", "A"
)
y <- tribble(
~key, ~val_y,~val_y2,
1, "Sangat Baik", "Pertahankan",
2, "Baik", "Tingkatkan"
)
left_join(x,y, by="key")
## # A tibble: 10 x 5
## key val_x val_x2 val_y val_y2
## <dbl> <chr> <chr> <chr> <chr>
## 1 1 Statistik A Sangat Baik Pertahankan
## 2 2 Kewarganegaraan B+ Baik Tingkatkan
## 3 1 Linier Algebra A Sangat Baik Pertahankan
## 4 2 Teosofi B+ Baik Tingkatkan
## 5 2 Sejarah Peradaban Islam A Baik Tingkatkan
## 6 1 PBO A Sangat Baik Pertahankan
## 7 2 Elektronik Digital A Baik Tingkatkan
## 8 2 Praktikum Elektronika Digital A Baik Tingkatkan
## 9 2 Praktikum PBO A Baik Tingkatkan
## 10 1 PKPBA A Sangat Baik Pertahankan
x <- tribble(
~key, ~val_x, ~val_x2,
1, "Statistik", "A",
2, "Kewarganegaraan", "B+",
1, "Linier Algebra", "A",
2, "Teosofi", "B+",
2, "Sejarah Peradaban Islam", "A",
1, "PBO", "A",
2, "Elektronik Digital", "A",
2, "Praktikum Elektronika Digital", "A",
2, "Praktikum PBO", "A",
1, "PKPBA", "A"
)
y <- tribble(
~key, ~val_y,~val_y2,
1, "Sangat Baik", "Pertahankan",
2, "Baik", "Tingkatkan"
)
right_join(x,y, by="key")
## # A tibble: 10 x 5
## key val_x val_x2 val_y val_y2
## <dbl> <chr> <chr> <chr> <chr>
## 1 1 Statistik A Sangat Baik Pertahankan
## 2 2 Kewarganegaraan B+ Baik Tingkatkan
## 3 1 Linier Algebra A Sangat Baik Pertahankan
## 4 2 Teosofi B+ Baik Tingkatkan
## 5 2 Sejarah Peradaban Islam A Baik Tingkatkan
## 6 1 PBO A Sangat Baik Pertahankan
## 7 2 Elektronik Digital A Baik Tingkatkan
## 8 2 Praktikum Elektronika Digital A Baik Tingkatkan
## 9 2 Praktikum PBO A Baik Tingkatkan
## 10 1 PKPBA A Sangat Baik Pertahankan
x <- tribble(
~key, ~val_x, ~val_x2,
1, "Statistik", "A",
2, "Kewarganegaraan", "B+",
1, "Linier Algebra", "A",
2, "Teosofi", "B+",
2, "Sejarah Peradaban Islam", "A",
1, "PBO", "A",
2, "Elektronik Digital", "A",
2, "Praktikum Elektronika Digital", "A",
2, "Praktikum PBO", "A",
1, "PKPBA", "A"
)
y <- tribble(
~key, ~val_y,~val_y2,
1, "Sangat Baik", "Pertahankan",
2, "Baik", "Tingkatkan"
)
semi_join(x,y, by="key")
## # A tibble: 10 x 3
## key val_x val_x2
## <dbl> <chr> <chr>
## 1 1 Statistik A
## 2 2 Kewarganegaraan B+
## 3 1 Linier Algebra A
## 4 2 Teosofi B+
## 5 2 Sejarah Peradaban Islam A
## 6 1 PBO A
## 7 2 Elektronik Digital A
## 8 2 Praktikum Elektronika Digital A
## 9 2 Praktikum PBO A
## 10 1 PKPBA A
x <- tribble(
~key, ~val_x, ~val_x2,
1, "Statistik", "A",
2, "Kewarganegaraan", "B+",
3, "Linier Algebra", "A",
3, "Teosofi", "B+",
1, "Sejarah Peradaban Islam", "A"
)
y <- tribble(
~key, ~val_y,~val_y2,
1, "PBO", "A",
2, "Elektronik Digital", "A",
3, "Praktikum Elektronika Digital", "A",
3, "Praktikum PBO", "A",
1, "PKPBA", "A"
)
semi_join(x,y, by="key")
## # A tibble: 5 x 3
## key val_x val_x2
## <dbl> <chr> <chr>
## 1 1 Statistik A
## 2 2 Kewarganegaraan B+
## 3 3 Linier Algebra A
## 4 3 Teosofi B+
## 5 1 Sejarah Peradaban Islam A
x <- tribble(
~key, ~val_x, ~val_x2,
1, "Statistik", "A",
2, "Kewarganegaraan", "B+",
3, "Linier Algebra", "A",
4, "Teosofi", "B+",
5, "Sejarah Peradaban Islam", "A"
)
y <- tribble(
~key, ~val_y,~val_y2,
1, "PBO", "A",
2, "Elektronik Digital", "A",
3, "Praktikum Elektronika Digital", "A",
4, "Praktikum PBO", "A",
6, "PKPBA", "A"
)
anti_join(x,y, by="key")
## # A tibble: 1 x 3
## key val_x val_x2
## <dbl> <chr> <chr>
## 1 5 Sejarah Peradaban Islam A
a <- tribble(
~x, ~y,
5, 4,
3, 1,
2, 6
)
b <- tribble(
~x, ~y,
5, 4,
3, 1,
2, 6
)
a
## # A tibble: 3 x 2
## x y
## <dbl> <dbl>
## 1 5 4
## 2 3 1
## 3 2 6
b
## # A tibble: 3 x 2
## x y
## <dbl> <dbl>
## 1 5 4
## 2 3 1
## 3 2 6
intersect(a,b)
## # A tibble: 3 x 2
## x y
## <dbl> <dbl>
## 1 5 4
## 2 3 1
## 3 2 6
union(a, b)
## # A tibble: 3 x 2
## x y
## <dbl> <dbl>
## 1 5 4
## 2 3 1
## 3 2 6
setdiff(a, b)
## # A tibble: 0 x 2
## # ... with 2 variables: x <dbl>, y <dbl>
setdiff(b, a)
## # A tibble: 0 x 2
## # ... with 2 variables: x <dbl>, y <dbl>