Tugas Akhir Praktikum STA 261
A. Contoh Akses Database
Apabila pengguna ingin mengakses database di R, diperlukan package DBI dan RSQlite sehingga pengguna perlu memastikan terlebih dahulu kedua package tersebut telah terinstall.
install.packages(c("RSQLite", "DBI"), dependencies = TRUE)Kemudian panggil kedua package tersebut dengan fungsi library().
library(RSQLite)
library(DBI)1. Menggunakan Engine SQL
Untuk menggunakan SQL engine di R pengguna memerlukan suatu objek connection yang berfungsi sebagai variabel yang menghubungkan SQL dengan aplikasi R
sql1 <- DBI::dbConnect(RSQLite::SQLite(), "C:/Users/user/OneDrive/Documents/MANDAREL/Company.db")Syntax menunjukkan pembuatan variabel sql1 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
DEPENDENT
WHERE
Sex=="F";| Essn | Dependent_name | Sex | Bdate | Relationship |
|---|---|---|---|---|
| 333445555 | Alice | F | 1986-04-04 | Daughter |
| 333445555 | Joy | F | 1958-05-03 | Spouse |
| 123456789 | Alice | F | 1988-12-30 | Daughter |
| 123456789 | Elizabeth | F | 1967-05-05 | Spouse |
2. Menggunakan DPLYR
Diperlukan variabel baru untuk memanggil suatu database.
dplyr1 <- DBI::dbConnect(RSQLite::SQLite(), "C:/Users/user/OneDrive/Documents/MANDAREL/Company.db")dengan kelas:
class(dplyr1)## [1] "SQLiteConnection"
## attr(,"package")
## [1] "RSQLite"
Untuk melihat ada tabel apa saja pada data company:
RSQLite::dbListTables(dplyr1)## [1] "DEPARTMENT" "DEPENDENT" "DEPT_LOCATIONS" "EMPLOYEE"
## [5] "PROJECT" "WORKS_ON"
Pengguna perlu memanggil 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 company sebagai variabel baru di R:
z <- dplyr::tbl(dplyr1, "DEPENDENT")
z## # Source: table<DEPENDENT> [?? x 5]
## # Database: sqlite 3.37.0
## # [C:\Users\user\OneDrive\Documents\MANDAREL\Company.db]
## Essn Dependent_name Sex Bdate Relationship
## <chr> <chr> <chr> <chr> <chr>
## 1 333445555 Alice F 1986-04-04 Daughter
## 2 333445555 Theodore M 1983-10-25 Son
## 3 333445555 Joy F 1958-05-03 Spouse
## 4 987654321 Abner M 1942-02-28 Spouse
## 5 123456789 Michael M 1988-01-04 Son
## 6 123456789 Alice F 1988-12-30 Daughter
## 7 123456789 Elizabeth F 1967-05-05 Spouse
Dalam syntax dplyr, fungsi dalam kurung dapat diubah menjadi “%>%” agar lebih mudah terbaca. Contohnya seperti berikut:
dplyr2 <- z %>%
select(Essn, Dependent_name, Sex, Bdate, Relationship) %>%
filter(Sex=="F") %>%
arrange(Essn)
dplyr2## # Source: lazy query [?? x 5]
## # Database: sqlite 3.37.0
## # [C:\Users\user\OneDrive\Documents\MANDAREL\Company.db]
## # Ordered by: Essn
## Essn Dependent_name Sex Bdate Relationship
## <chr> <chr> <chr> <chr> <chr>
## 1 123456789 Alice F 1988-12-30 Daughter
## 2 123456789 Elizabeth F 1967-05-05 Spouse
## 3 333445555 Alice F 1986-04-04 Daughter
## 4 333445555 Joy F 1958-05-03 Spouse
Syntax di atas akan memanggil tabel DEPENDENT dan mencetak Essn, nama dependent, jenis kelamin, tanggal lahir, dan hubungan (relationship) dengan jenis kelamin yaitu perempuan, kemudian diurutkan berdasarkan Essn.
Pengguna dapat menggunakan syntax di bawah ini untuk melihat bagaimana jika fungsi tersebut dijalankan di SQL:
dplyr::show_query(dplyr2)## <SQL>
## SELECT *
## FROM (SELECT `Essn`, `Dependent_name`, `Sex`, `Bdate`, `Relationship`
## FROM `DEPENDENT`)
## WHERE (`Sex` = 'F')
## ORDER BY `Essn`
B. Data Wrangling
Pada tahap ini kita akan menggunakan dataset rock yang telah tersedia pada default datasets di R.
library(datasets)
rockSelect
Perintah select berfungsi untuk memilih kolom tertentu saja untuk dicetak.
rock %>% select(area, shape)## area shape
## 1 4990 0.0903296
## 2 7002 0.1486220
## 3 7558 0.1833120
## 4 7352 0.1170630
## 5 7943 0.1224170
## 6 7979 0.1670450
## 7 9333 0.1896510
## 8 8209 0.1641270
## 9 8393 0.2036540
## 10 6425 0.1623940
## 11 9364 0.1509440
## 12 8624 0.1481410
## 13 10651 0.2285950
## 14 8868 0.2316230
## 15 9417 0.1725670
## 16 8874 0.1534810
## 17 10962 0.2043140
## 18 10743 0.2627270
## 19 11878 0.2000710
## 20 9867 0.1448100
## 21 7838 0.1138520
## 22 11876 0.2910290
## 23 12212 0.2400770
## 24 8233 0.1618650
## 25 6360 0.2808870
## 26 4193 0.1794550
## 27 7416 0.1918020
## 28 5246 0.1330830
## 29 6509 0.2252140
## 30 4895 0.3412730
## 31 6775 0.3116460
## 32 7894 0.2760160
## 33 5980 0.1976530
## 34 5318 0.3266350
## 35 7392 0.1541920
## 36 7894 0.2760160
## 37 3469 0.1769690
## 38 1468 0.4387120
## 39 3524 0.1635860
## 40 5267 0.2538320
## 41 5048 0.3286410
## 42 1016 0.2300810
## 43 5605 0.4641250
## 44 8793 0.4204770
## 45 3475 0.2007440
## 46 1651 0.2626510
## 47 5514 0.1824530
## 48 9718 0.2004470
Arrange
Perintah arrange berfungsi untuk mengurutkan tabel berdasarkan kolom tertentu yang telah ditentukan. Default dari perintah ini adalah pengurutan dari yang terkecil. Pengguna bisa menggunakan fungsi desc untuk mengurutkannya dari yang terbesar.
rock %>% arrange(desc(shape))## area peri shape perm
## 1 5605 1145.690 0.4641250 1300.0
## 2 1468 476.322 0.4387120 100.0
## 3 8793 2280.490 0.4204770 1300.0
## 4 4895 1239.660 0.3412730 890.0
## 5 5048 941.543 0.3286410 1300.0
## 6 5318 990.388 0.3266350 950.0
## 7 6775 1728.140 0.3116460 890.0
## 8 11876 4353.140 0.2910290 142.0
## 9 6360 1977.390 0.2808870 740.0
## 10 7894 1461.060 0.2760160 890.0
## 11 7894 1461.060 0.2760160 950.0
## 12 10743 4787.620 0.2627270 58.6
## 13 1651 597.808 0.2626510 580.0
## 14 5267 1644.960 0.2538320 100.0
## 15 12212 4697.650 0.2400770 142.0
## 16 8868 3518.040 0.2316230 82.4
## 17 1016 308.642 0.2300810 1300.0
## 18 10651 4036.540 0.2285950 82.4
## 19 6509 1851.210 0.2252140 890.0
## 20 10962 4608.660 0.2043140 58.6
## 21 8393 3682.040 0.2036540 119.0
## 22 3475 1174.110 0.2007440 580.0
## 23 9718 1485.580 0.2004470 580.0
## 24 11878 4864.220 0.2000710 58.6
## 25 5980 1426.760 0.1976530 950.0
## 26 7416 1916.240 0.1918020 740.0
## 27 9333 4345.750 0.1896510 17.1
## 28 7558 3930.660 0.1833120 6.3
## 29 5514 1455.880 0.1824530 580.0
## 30 4193 1379.350 0.1794550 740.0
## 31 3469 1376.700 0.1769690 100.0
## 32 9417 3999.370 0.1725670 82.4
## 33 7979 4010.150 0.1670450 17.1
## 34 8209 4344.750 0.1641270 17.1
## 35 3524 1189.460 0.1635860 100.0
## 36 6425 3098.650 0.1623940 119.0
## 37 8233 3518.440 0.1618650 142.0
## 38 7392 1350.760 0.1541920 950.0
## 39 8874 3629.070 0.1534810 82.4
## 40 9364 4480.050 0.1509440 119.0
## 41 7002 3892.600 0.1486220 6.3
## 42 8624 3986.240 0.1481410 119.0
## 43 9867 4479.410 0.1448100 58.6
## 44 5246 1585.420 0.1330830 740.0
## 45 7943 3948.540 0.1224170 17.1
## 46 7352 3869.320 0.1170630 6.3
## 47 7838 3428.740 0.1138520 142.0
## 48 4990 2791.900 0.0903296 6.3
Filter
Perintah filter berfungsi untuk menyeleksi atau memilih baris berdasarkan ketentuan tertentu.
rock %>% filter(area > 9427)## area peri shape perm
## 1 10651 4036.54 0.228595 82.4
## 2 10962 4608.66 0.204314 58.6
## 3 10743 4787.62 0.262727 58.6
## 4 11878 4864.22 0.200071 58.6
## 5 9867 4479.41 0.144810 58.6
## 6 11876 4353.14 0.291029 142.0
## 7 12212 4697.65 0.240077 142.0
## 8 9718 1485.58 0.200447 580.0
Mutate
Perintah mutate berfungsi untuk membuat kolom baru dari kolom yang sudah ada.
rock %>% mutate(zone = area)## area peri shape perm zone
## 1 4990 2791.900 0.0903296 6.3 4990
## 2 7002 3892.600 0.1486220 6.3 7002
## 3 7558 3930.660 0.1833120 6.3 7558
## 4 7352 3869.320 0.1170630 6.3 7352
## 5 7943 3948.540 0.1224170 17.1 7943
## 6 7979 4010.150 0.1670450 17.1 7979
## 7 9333 4345.750 0.1896510 17.1 9333
## 8 8209 4344.750 0.1641270 17.1 8209
## 9 8393 3682.040 0.2036540 119.0 8393
## 10 6425 3098.650 0.1623940 119.0 6425
## 11 9364 4480.050 0.1509440 119.0 9364
## 12 8624 3986.240 0.1481410 119.0 8624
## 13 10651 4036.540 0.2285950 82.4 10651
## 14 8868 3518.040 0.2316230 82.4 8868
## 15 9417 3999.370 0.1725670 82.4 9417
## 16 8874 3629.070 0.1534810 82.4 8874
## 17 10962 4608.660 0.2043140 58.6 10962
## 18 10743 4787.620 0.2627270 58.6 10743
## 19 11878 4864.220 0.2000710 58.6 11878
## 20 9867 4479.410 0.1448100 58.6 9867
## 21 7838 3428.740 0.1138520 142.0 7838
## 22 11876 4353.140 0.2910290 142.0 11876
## 23 12212 4697.650 0.2400770 142.0 12212
## 24 8233 3518.440 0.1618650 142.0 8233
## 25 6360 1977.390 0.2808870 740.0 6360
## 26 4193 1379.350 0.1794550 740.0 4193
## 27 7416 1916.240 0.1918020 740.0 7416
## 28 5246 1585.420 0.1330830 740.0 5246
## 29 6509 1851.210 0.2252140 890.0 6509
## 30 4895 1239.660 0.3412730 890.0 4895
## 31 6775 1728.140 0.3116460 890.0 6775
## 32 7894 1461.060 0.2760160 890.0 7894
## 33 5980 1426.760 0.1976530 950.0 5980
## 34 5318 990.388 0.3266350 950.0 5318
## 35 7392 1350.760 0.1541920 950.0 7392
## 36 7894 1461.060 0.2760160 950.0 7894
## 37 3469 1376.700 0.1769690 100.0 3469
## 38 1468 476.322 0.4387120 100.0 1468
## 39 3524 1189.460 0.1635860 100.0 3524
## 40 5267 1644.960 0.2538320 100.0 5267
## 41 5048 941.543 0.3286410 1300.0 5048
## 42 1016 308.642 0.2300810 1300.0 1016
## 43 5605 1145.690 0.4641250 1300.0 5605
## 44 8793 2280.490 0.4204770 1300.0 8793
## 45 3475 1174.110 0.2007440 580.0 3475
## 46 1651 597.808 0.2626510 580.0 1651
## 47 5514 1455.880 0.1824530 580.0 5514
## 48 9718 1485.580 0.2004470 580.0 9718
Summarise
Perintah summarise berfungsi untuk meringkas atau mengagregasi baris data. Digunakan fungsi group_by agar informasi yang dicetak lebih mudah dianalisis.
rock %>% group_by(perm) %>%
summarise (avg_area=mean(area))## # A tibble: 12 x 2
## perm avg_area
## <dbl> <dbl>
## 1 6.3 6726.
## 2 17.1 8366
## 3 58.6 10862.
## 4 82.4 9452.
## 5 100 3432
## 6 119 8202.
## 7 142 10040.
## 8 580 5090.
## 9 740 5804.
## 10 890 6518.
## 11 950 6646
## 12 1300 5116.
Melakukan kelima perintah secara bersamaan
Selain itu, pengguna dapat menjalankan kelima perintah tersebut secara bersamaan untuk mempersingkat program.
rock %>% select(area, peri, shape, perm) %>%
arrange(desc(shape)) %>%
filter(area > 9427) %>%
mutate(zone = area) %>%
summarise (avg_area=mean(area))## avg_area
## 1 10988.38