A. Contoh Akses Database

1. Menggunakan Engine SQL

Perlu dibuat suatu objek connection sebagai variabel yang menghubungkan SQL dengan aplikasi R Untuk menggunakan SQL engine di R.

data1 <- DBI::dbConnect(RSQLite::SQLite(), "C:/sqlite/Chinook.db")

Syntax menunjukkan pembuatan variabel data1 sebagai objek connection dengan engine SQL pada file tertentu yang merujuk ke device pengguna.

Pengguna dapat menggunakan syntax SQL di R seperti contoh berikut:

SELECT
  *
FROM
  Albums
WHERE
  ArtistId=1;
2 records
AlbumId Title ArtistId
1 For Those About To Rock We Salute You 1
4 Let There Be Rock 1

2. Menggunakan DPLYR

Diperlukan variabel baru untuk memanggil suatu database.

data2 <- DBI::dbConnect(RSQLite::SQLite(), "C:/sqlite/Chinook.db")

dengan kelas:

class(data2)
## [1] "SQLiteConnection"
## attr(,"package")
## [1] "RSQLite"

Untuk melihat ada tabel apa saja pada chinook:

RSQLite::dbListTables(data2)
##  [1] "albums"          "artists"         "customers"       "employees"      
##  [5] "genres"          "invoice_items"   "invoices"        "media_types"    
##  [9] "playlist_track"  "playlists"       "sqlite_sequence" "sqlite_stat1"   
## [13] "tracks"

Panggil package yang akan digunakan terlebih dahulu, yaitu package dplry dan dbplyr atau hanya memanggil package tidyverse yang mencakup keduanya sekaligus.

library(dplyr)
library(dbplyr)

Dengan menggunakan fungsi dplyr, kita dapat memanggil tabel spesifik dari database chinook2 sebagai variabel baru di R:

albums <- dplyr::tbl(data2, "Albums")
albums
## # Source:   table<Albums> [?? x 3]
## # Database: sqlite 3.36.0 [C:\sqlite\chinook.db]
##    AlbumId Title                                 ArtistId
##      <int> <chr>                                    <int>
##  1       1 For Those About To Rock We Salute You        1
##  2       2 Balls to the Wall                            2
##  3       3 Restless and Wild                            2
##  4       4 Let There Be Rock                            1
##  5       5 Big Ones                                     3
##  6       6 Jagged Little Pill                           4
##  7       7 Facelift                                     5
##  8       8 Warner 25 Anos                               6
##  9       9 Plays Metallica By Four Cellos               7
## 10      10 Audioslave                                   8
## # ... with more rows

Dalam syntax dplyr, fungsi dalam kurung dapat diubah menjadi “%>%” agar lebih mudah terbaca. Contoh penggunaannya :

data3 <- albums %>%
  select(AlbumId, Title, ArtistId) %>%
  filter(ArtistId==2) %>%
  arrange(AlbumId)
data3
## # Source:     lazy query [?? x 3]
## # Database:   sqlite 3.36.0 [C:\sqlite\chinook.db]
## # Ordered by: AlbumId
##   AlbumId Title             ArtistId
##     <int> <chr>                <int>
## 1       2 Balls to the Wall        2
## 2       3 Restless and Wild        2

Syntax di atas memanggil tabel album dan mencetak nomor ID album, Judul, nomor ID artis dengan ID artis adalah 2 kemudian diurutkan berdasarkan nomor ID album.

Pengguna dapat menggunakan syntax berikut untuk melihat bagaimana jika fungsi tersebut dijalankan di SQL:

dplyr::show_query(data3)
## <SQL>
## SELECT *
## FROM (SELECT `AlbumId`, `Title`, `ArtistId`
## FROM `Albums`)
## WHERE (`ArtistId` = 2.0)
## ORDER BY `AlbumId`

B. Data Wrangling

Pada tahap ini kita akan menggunakan dataset warpbreaks yang telah tersedia pada default datasets di R.

library(datasets)
warpbreaks

Select

Perintah select berfungsi untuk memilih kolom tertentu saja untuk dicetak.

warpbreaks %>% select(breaks, tension)
##    breaks tension
## 1      26       L
## 2      30       L
## 3      54       L
## 4      25       L
## 5      70       L
## 6      52       L
## 7      51       L
## 8      26       L
## 9      67       L
## 10     18       M
## 11     21       M
## 12     29       M
## 13     17       M
## 14     12       M
## 15     18       M
## 16     35       M
## 17     30       M
## 18     36       M
## 19     36       H
## 20     21       H
## 21     24       H
## 22     18       H
## 23     10       H
## 24     43       H
## 25     28       H
## 26     15       H
## 27     26       H
## 28     27       L
## 29     14       L
## 30     29       L
## 31     19       L
## 32     29       L
## 33     31       L
## 34     41       L
## 35     20       L
## 36     44       L
## 37     42       M
## 38     26       M
## 39     19       M
## 40     16       M
## 41     39       M
## 42     28       M
## 43     21       M
## 44     39       M
## 45     29       M
## 46     20       H
## 47     21       H
## 48     24       H
## 49     17       H
## 50     13       H
## 51     15       H
## 52     15       H
## 53     16       H
## 54     28       H

Arrange

Perintah arrange berfungsi untuk mengurutkan tabel berdasarkan kolom tertentu yang telah ditentukan. Default dari perintah ini adalah pengurutan dari yang terkecil. Kita bisa menggunakan fungsi desc untuk mengurutkannya dari yang terbesar.

warpbreaks %>% arrange(desc(breaks))
##    breaks wool tension
## 1      70    A       L
## 2      67    A       L
## 3      54    A       L
## 4      52    A       L
## 5      51    A       L
## 6      44    B       L
## 7      43    A       H
## 8      42    B       M
## 9      41    B       L
## 10     39    B       M
## 11     39    B       M
## 12     36    A       M
## 13     36    A       H
## 14     35    A       M
## 15     31    B       L
## 16     30    A       L
## 17     30    A       M
## 18     29    A       M
## 19     29    B       L
## 20     29    B       L
## 21     29    B       M
## 22     28    A       H
## 23     28    B       M
## 24     28    B       H
## 25     27    B       L
## 26     26    A       L
## 27     26    A       L
## 28     26    A       H
## 29     26    B       M
## 30     25    A       L
## 31     24    A       H
## 32     24    B       H
## 33     21    A       M
## 34     21    A       H
## 35     21    B       M
## 36     21    B       H
## 37     20    B       L
## 38     20    B       H
## 39     19    B       L
## 40     19    B       M
## 41     18    A       M
## 42     18    A       M
## 43     18    A       H
## 44     17    A       M
## 45     17    B       H
## 46     16    B       M
## 47     16    B       H
## 48     15    A       H
## 49     15    B       H
## 50     15    B       H
## 51     14    B       L
## 52     13    B       H
## 53     12    A       M
## 54     10    A       H

Filter

Perintah filter berfungsi untuk menyeleksi atau memilih baris berdasarkan ketentuan tertentu.

warpbreaks %>% filter(wool=='A')
##    breaks wool tension
## 1      26    A       L
## 2      30    A       L
## 3      54    A       L
## 4      25    A       L
## 5      70    A       L
## 6      52    A       L
## 7      51    A       L
## 8      26    A       L
## 9      67    A       L
## 10     18    A       M
## 11     21    A       M
## 12     29    A       M
## 13     17    A       M
## 14     12    A       M
## 15     18    A       M
## 16     35    A       M
## 17     30    A       M
## 18     36    A       M
## 19     36    A       H
## 20     21    A       H
## 21     24    A       H
## 22     18    A       H
## 23     10    A       H
## 24     43    A       H
## 25     28    A       H
## 26     15    A       H
## 27     26    A       H

Mutate

mutate adalah perintah yang dapat membuat kolom baru dari kolom yang sudah ada.

warpbreaks %>% mutate(number=breaks)
##    breaks wool tension number
## 1      26    A       L     26
## 2      30    A       L     30
## 3      54    A       L     54
## 4      25    A       L     25
## 5      70    A       L     70
## 6      52    A       L     52
## 7      51    A       L     51
## 8      26    A       L     26
## 9      67    A       L     67
## 10     18    A       M     18
## 11     21    A       M     21
## 12     29    A       M     29
## 13     17    A       M     17
## 14     12    A       M     12
## 15     18    A       M     18
## 16     35    A       M     35
## 17     30    A       M     30
## 18     36    A       M     36
## 19     36    A       H     36
## 20     21    A       H     21
## 21     24    A       H     24
## 22     18    A       H     18
## 23     10    A       H     10
## 24     43    A       H     43
## 25     28    A       H     28
## 26     15    A       H     15
## 27     26    A       H     26
## 28     27    B       L     27
## 29     14    B       L     14
## 30     29    B       L     29
## 31     19    B       L     19
## 32     29    B       L     29
## 33     31    B       L     31
## 34     41    B       L     41
## 35     20    B       L     20
## 36     44    B       L     44
## 37     42    B       M     42
## 38     26    B       M     26
## 39     19    B       M     19
## 40     16    B       M     16
## 41     39    B       M     39
## 42     28    B       M     28
## 43     21    B       M     21
## 44     39    B       M     39
## 45     29    B       M     29
## 46     20    B       H     20
## 47     21    B       H     21
## 48     24    B       H     24
## 49     17    B       H     17
## 50     13    B       H     13
## 51     15    B       H     15
## 52     15    B       H     15
## 53     16    B       H     16
## 54     28    B       H     28

Summarise

Perintah summarise berfungsi untuk meringkas atau mengagregasi baris data. Digunakan fungsi group_by agar informasi yang dicetak lebih mudah dianalisis.

warpbreaks %>% group_by(wool) %>%
          summarise (avg_breaks=mean(breaks))
## # A tibble: 2 x 2
##   wool  avg_breaks
##   <fct>      <dbl>
## 1 A           31.0
## 2 B           25.3

Penggunaan kelima Fungsi Secara Bersamaan

Kita dapat melakukan perintah kelima perintah secara bersamaan untuk mempersingkat program.

warpbreaks %>% select(breaks, wool, tension) %>%
             arrange(desc(breaks)) %>%
             filter(wool=='A')  %>%
             mutate(number=breaks) %>%
             summarise (avg_breaks=mean(breaks))
##   avg_breaks
## 1   31.03704