Tugas Akhir Praktikum STA 261
A. Engine SQL
Database yang digunakan adalah database northwind. Berikut adalah link downdload database northwindSumber .
1. Install Package DBI dan RSQLite
Untuk dapat melakukan akses database, perlu dipastikan package DBI dan RSQLite telah terinstall.
install.packages(c("RSQLite", "DBI"), dependencies = TRUE)2. Library
Selain itu kita juga memasang package tidyverse yang mencakup beberapa package yang dibutuhkan salah satunya dplyr serta memanggil package RSQLite dan DBI untuk mengakses dan mengolah database terkait.
library(tidyverse)
library(RSQLite)
library(DBI)3. Koneksi Database
Koneksi terhadap database pada R dapat menggunakan sintaks berikut: DBI::dbConnect(RSQLite::SQLite(), path = ":dbname:")
northwind<-DBI::dbConnect(RSQLite::SQLite(), "C:/sqlite/northwind_large.sqlite")4. Melihat Daftar Entity (Tabel)
RSQLite::dbListTables(northwind)## [1] "Category" "Customer" "CustomerCustomerDemo"
## [4] "CustomerDemographic" "Employee" "EmployeeTerritory"
## [7] "Order" "OrderDetail" "Product"
## [10] "ProductDetails_V" "Region" "Shipper"
## [13] "Supplier" "Territory"
5. Menjalankan Query SQL
Setelah melakukan dbConnect() pada database kita dapat memberikan perintah SQL.
SELECT
*
FROM
Territory;| Id | TerritoryDescription | RegionId |
|---|---|---|
| 01581 | Westboro | 1 |
| 01730 | Bedford | 1 |
| 01833 | Georgetow | 1 |
| 02116 | Boston | 1 |
| 02139 | Cambridge | 1 |
| 02184 | Braintree | 1 |
| 02903 | Providence | 1 |
| 03049 | Hollis | 3 |
| 03801 | Portsmouth | 3 |
| 06897 | Wilton | 1 |
6. Memutuskan Koneksi Database
Memutuskan koneksi dengan suatu database diperlukan jika ingin mengakses database lain.
dbDisconnect(northwind)B. Menggunakan dplyr
dplyr adalah package di R yang dapat digunakan untuk memanipulasi data. Package ini sangat berguna ketika digunakan untuk melakukan analisis dan eksplorasi data.
1. Koneksi Database
northwind<-DBI::dbConnect(RSQLite::SQLite(), "C:/sqlite/northwind_large.sqlite")2. Mengambil Entity
Sintaks tersebut memerintahkan untuk mengambil entity Customer dalam format tibble dan disimpan pada variabel baru customer ## 3. Memuat Tabel
customer <- dplyr::tbl(northwind,"Customer")
customer## # Source: table<Customer> [?? x 11]
## # Database: sqlite 3.36.0 [C:\sqlite\northwind_large.sqlite]
## Id CompanyName ContactName ContactTitle Address City Region PostalCode
## <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr>
## 1 ALFKI Alfreds Fut~ Maria Anders Sales Repres~ Obere ~ Berl~ Weste~ 12209
## 2 ANATR Ana Trujill~ Ana Trujillo Owner Avda. ~ Méxi~ Centr~ 05021
## 3 ANTON Antonio Mor~ Antonio Mor~ Owner Matade~ Méxi~ Centr~ 05023
## 4 AROUT Around the ~ Thomas Hardy Sales Repres~ 120 Ha~ Lond~ Briti~ WA1 1DP
## 5 BERGS Berglunds s~ Christina B~ Order Admini~ Berguv~ Luleå North~ S-958 22
## 6 BLAUS Blauer See ~ Hanna Moos Sales Repres~ Forste~ Mann~ Weste~ 68306
## 7 BLONP Blondesddsl~ Frédérique ~ Marketing Ma~ 24, pl~ Stra~ Weste~ 67000
## 8 BOLID Bólido Comi~ Martín Somm~ Owner C/ Ara~ Madr~ South~ 28023
## 9 BONAP Bon app Laurence Le~ Owner 12, ru~ Mars~ Weste~ 13008
## 10 BOTTM Bottom-Doll~ Elizabeth L~ Accounting M~ 23 Tsa~ Tsaw~ North~ T2F 8M4
## # ... with more rows, and 3 more variables: Country <chr>, Phone <chr>,
## # Fax <chr>
4. Melihat Kelas dari Tabel
class(customer)## [1] "tbl_SQLiteConnection" "tbl_dbi" "tbl_sql"
## [4] "tbl_lazy" "tbl"
5. Menyeleksi Kolom pada Tabel
query <- customer %>% select(-Phone)
query## # Source: lazy query [?? x 10]
## # Database: sqlite 3.36.0 [C:\sqlite\northwind_large.sqlite]
## Id CompanyName ContactName ContactTitle Address City Region PostalCode
## <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr>
## 1 ALFKI Alfreds Fut~ Maria Anders Sales Repres~ Obere ~ Berl~ Weste~ 12209
## 2 ANATR Ana Trujill~ Ana Trujillo Owner Avda. ~ Méxi~ Centr~ 05021
## 3 ANTON Antonio Mor~ Antonio Mor~ Owner Matade~ Méxi~ Centr~ 05023
## 4 AROUT Around the ~ Thomas Hardy Sales Repres~ 120 Ha~ Lond~ Briti~ WA1 1DP
## 5 BERGS Berglunds s~ Christina B~ Order Admini~ Berguv~ Luleå North~ S-958 22
## 6 BLAUS Blauer See ~ Hanna Moos Sales Repres~ Forste~ Mann~ Weste~ 68306
## 7 BLONP Blondesddsl~ Frédérique ~ Marketing Ma~ 24, pl~ Stra~ Weste~ 67000
## 8 BOLID Bólido Comi~ Martín Somm~ Owner C/ Ara~ Madr~ South~ 28023
## 9 BONAP Bon app Laurence Le~ Owner 12, ru~ Mars~ Weste~ 13008
## 10 BOTTM Bottom-Doll~ Elizabeth L~ Accounting M~ 23 Tsa~ Tsaw~ North~ T2F 8M4
## # ... with more rows, and 2 more variables: Country <chr>, Fax <chr>
C. Data Wrangling
Dataset yang saya gunakan untuk wrangling adalah dataset Puromycin yang tersedia pada package default R yakni datasets.
library(datasets)
Puromycin## conc rate state
## 1 0.02 76 treated
## 2 0.02 47 treated
## 3 0.06 97 treated
## 4 0.06 107 treated
## 5 0.11 123 treated
## 6 0.11 139 treated
## 7 0.22 159 treated
## 8 0.22 152 treated
## 9 0.56 191 treated
## 10 0.56 201 treated
## 11 1.10 207 treated
## 12 1.10 200 treated
## 13 0.02 67 untreated
## 14 0.02 51 untreated
## 15 0.06 84 untreated
## 16 0.06 86 untreated
## 17 0.11 98 untreated
## 18 0.11 115 untreated
## 19 0.22 131 untreated
## 20 0.22 124 untreated
## 21 0.56 144 untreated
## 22 0.56 158 untreated
## 23 1.10 160 untreated
Untuk mengetahui informasi terkait dataset, kita dapat menggunakan sintaks ?sebelum nama dataset .
?PuromycinDataset Puromycin memiliki 23 baris dan 3 kolom yang berisi data kecepatan reaksi versus konsentrasi substrat dalam reaksi enzimatik yang melibatkan sel yang tidak diobati atau sel yang diobati dengan Puromycin.
Pada dataset tersebut kita akan menggunakan perintah arrange , mutate ,filter,select, dan summarise.
Select
Perintah select berfungsi untuk menyeleksi kolom tertentu .
Puromycin %>% select(conc,rate,state)## conc rate state
## 1 0.02 76 treated
## 2 0.02 47 treated
## 3 0.06 97 treated
## 4 0.06 107 treated
## 5 0.11 123 treated
## 6 0.11 139 treated
## 7 0.22 159 treated
## 8 0.22 152 treated
## 9 0.56 191 treated
## 10 0.56 201 treated
## 11 1.10 207 treated
## 12 1.10 200 treated
## 13 0.02 67 untreated
## 14 0.02 51 untreated
## 15 0.06 84 untreated
## 16 0.06 86 untreated
## 17 0.11 98 untreated
## 18 0.11 115 untreated
## 19 0.22 131 untreated
## 20 0.22 124 untreated
## 21 0.56 144 untreated
## 22 0.56 158 untreated
## 23 1.10 160 untreated
Arrange
Perintah arrange digunakan untuk mengurutkan tabel berdasarkan kolom tertentu. Secara default fungsi arrange akan mengurutkan secara ascending namun jika ingin mengurutkan secara descending tambahkan fungsi desc()
Puromycin %>% arrange(rate)## conc rate state
## 1 0.02 47 treated
## 2 0.02 51 untreated
## 3 0.02 67 untreated
## 4 0.02 76 treated
## 5 0.06 84 untreated
## 6 0.06 86 untreated
## 7 0.06 97 treated
## 8 0.11 98 untreated
## 9 0.06 107 treated
## 10 0.11 115 untreated
## 11 0.11 123 treated
## 12 0.22 124 untreated
## 13 0.22 131 untreated
## 14 0.11 139 treated
## 15 0.56 144 untreated
## 16 0.22 152 treated
## 17 0.56 158 untreated
## 18 0.22 159 treated
## 19 1.10 160 untreated
## 20 0.56 191 treated
## 21 1.10 200 treated
## 22 0.56 201 treated
## 23 1.10 207 treated
Filter
Puromycin %>% filter(rate>50)## conc rate state
## 1 0.02 76 treated
## 2 0.06 97 treated
## 3 0.06 107 treated
## 4 0.11 123 treated
## 5 0.11 139 treated
## 6 0.22 159 treated
## 7 0.22 152 treated
## 8 0.56 191 treated
## 9 0.56 201 treated
## 10 1.10 207 treated
## 11 1.10 200 treated
## 12 0.02 67 untreated
## 13 0.02 51 untreated
## 14 0.06 84 untreated
## 15 0.06 86 untreated
## 16 0.11 98 untreated
## 17 0.11 115 untreated
## 18 0.22 131 untreated
## 19 0.22 124 untreated
## 20 0.56 144 untreated
## 21 0.56 158 untreated
## 22 1.10 160 untreated
Mutate
Puromycin %>% mutate(percentage= rate/100)## conc rate state percentage
## 1 0.02 76 treated 0.76
## 2 0.02 47 treated 0.47
## 3 0.06 97 treated 0.97
## 4 0.06 107 treated 1.07
## 5 0.11 123 treated 1.23
## 6 0.11 139 treated 1.39
## 7 0.22 159 treated 1.59
## 8 0.22 152 treated 1.52
## 9 0.56 191 treated 1.91
## 10 0.56 201 treated 2.01
## 11 1.10 207 treated 2.07
## 12 1.10 200 treated 2.00
## 13 0.02 67 untreated 0.67
## 14 0.02 51 untreated 0.51
## 15 0.06 84 untreated 0.84
## 16 0.06 86 untreated 0.86
## 17 0.11 98 untreated 0.98
## 18 0.11 115 untreated 1.15
## 19 0.22 131 untreated 1.31
## 20 0.22 124 untreated 1.24
## 21 0.56 144 untreated 1.44
## 22 0.56 158 untreated 1.58
## 23 1.10 160 untreated 1.60
Summarise
Perintah summarise berfungsi untuk meringkas atau mengagregasi baris data.
Puromycin %>% group_by(state)%>% summarise(avg_rate=mean(rate))## # A tibble: 2 x 2
## state avg_rate
## <fct> <dbl>
## 1 treated 142.
## 2 untreated 111.
Melakukan kelima perintah bersamaan
Puromycin %>% select(conc,rate,state) %>% arrange(rate)%>% filter(rate>50)%>% mutate(percentage= rate/100)%>% group_by(state)%>% summarise(avg_rate=mean(rate))