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;
Displaying records 1 - 10
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 .

?Puromycin

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