Penjelasan

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.

Masukkan library untuk dplyr

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()

Pembuatan tabel data set baru

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 melalui variable key

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      " "                             " "

Pembuatan tabel data set baru

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 melalui variable key

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 melalui variable key

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 melalui variable key

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

Pembuatan tabel dan left join melalui variable key

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

Pembuatan tabel dan right join melalui variable key

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

Pembuatan tabel dan semi join melalui variable key

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

Pembuatan tabel dan anti join melalui variable key

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

Pembuatan tabel

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

Analisa intersect

intersect(a,b)
## # A tibble: 3 x 2
##       x     y
##   <dbl> <dbl>
## 1     5     4
## 2     3     1
## 3     2     6

Analisa union

union(a, b)
## # A tibble: 3 x 2
##       x     y
##   <dbl> <dbl>
## 1     5     4
## 2     3     1
## 3     2     6

Penggunaan setdiff

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>

Referensi

https://rpubs.com/suhartono-uinmaliki/relational https://rmarkdown.rstudio.com/lesson-1.html https://ourcodingclub.github.io/tutorials/rmarkdown/