Tugas Akhir Praktikum STA 261

1. Cara Akses Database di R

Pada publikasi kali ini ,saya akan mengakses database chinook dan melakukan perintah dasar dari drive SQLite. Untuk dapat melakukannya, perlu dipastikan package DBI dan RSQLite telah terinstall.

A. Install Package

install.packages(c("RSQLite", "DBI"), dependencies = TRUE)

B. Library

Selanjutnya ,kita memanggil package tidyverse yang mencakup beberapa package yang dibutuhkan salah satunya dplyr serta memanggil package RSQLite dan DBIuntuk mengakses dan mengolah database terkait.

library(tidyverse)
library(RSQLite)
library(DBI)

C. Koneksi Database

Secara umum, koneksi terhadap database pada R dapat menggunakan sintaks berikut: DBI::dbConnect(RSQLite::SQLite(), path = ":dbname:")

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

D. Melihat List Entity

RSQLite::dbListTables(db)
##  [1] "DEPARTMENT"      "DEPENDENT"       "DEPT_LOCATIONS"  "EMPLOYEE"       
##  [5] "PROJECT"         "WORKS_ON"        "albums"          "artists"        
##  [9] "customers"       "employees"       "genres"          "invoice_items"  
## [13] "invoices"        "media_types"     "playlist_track"  "playlists"      
## [17] "sqlite_sequence" "sqlite_stat1"    "tracks"

E. Menjalankan Query SQL

Setelah melakukan dbConnect() pada database kita dapat memberikan perintah SQL.

SELECT 
  Fname ||' '|| Minit||' '||Lname as Name, Ssn , Sex , substring(Bdate,1,4) as Birth, Salary , Dno 
FROM
  employee
ORDER BY
  Salary;
8 records
Name Ssn Sex Birth Salary Dno
Alicia J Zelaya 999887777 F 1968 25000 4
Joyce A English 453453453 F 1972 25000 5
Ahmad V Jabbar 987987987 M 1969 25000 4
John B Smith 123456789 M 1965 30000 5
Ramesh K Narayan 666884444 M 1962 38000 5
Franklin T Wong 333445555 M 1965 40000 5
Jennifer S Wallace 987654321 F 1941 43000 4
James E Borg 888665555 M 1937 55000 1

Query di atas menggabungkan kolom Fname,Minit, dan Lname menjadi kolom Name kemudian melakukan substring kolom Bdate untuk menyeleksi unsur tahun serta melakukan penamaan ulang menjadi Birth. Setelah itu data dalam Entity EMPLOYEE diurutkan secara ascending berdasarkan gaji karyawan.

F. Memutuskan Koneksi Database

Memutuskan koneksi dengan suatu database diperlukan jika ingin mengakses database lain.

dbDisconnect(db)

2. Menggunakan dplyr

dplyr adalah package di R yang dapat digunakan untuk memanipulasi data. Package ini dikembangkan oleh Hadley Wickham dan Roman Francois yang memberikan beberapa fungsi yang mudah digunakan. Package ini sangat berguna ketika digunakan untuk melakukan analisis dan eksplorasi data.

A. Koneksi Database

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

B. Mengambil Entity

Sintaks tersebut memerintahkan untuk mengambil entity EMPLOYEE dalam format tibble dan disimpan pada variabel baru employee

employee <- dplyr::tbl(db,"EMPLOYEE")

C. Mengecek Class Entity

class(employee)
## [1] "tbl_SQLiteConnection" "tbl_dbi"              "tbl_sql"             
## [4] "tbl_lazy"             "tbl"

D. Manipulasi Data

Sintaks dibawah membuat menyaring record pada entity employee dengan spesifikasi tertentu

query <-employee %>% filter(Sex= "M" & Salary >1000)
dplyr::show_query(query)
## <SQL>
## SELECT *
## FROM `EMPLOYEE`
## WHERE ('M' AND `Salary` > 1000.0 AS `Sex`)

3. Data Wrangling

Pada bahasan kali ini saya akan mendemonstrasikan wrangling dataset women yang tersedia pada package default R yakni datasets.

library(datasets)
women
##    height weight
## 1      58    115
## 2      59    117
## 3      60    120
## 4      61    123
## 5      62    126
## 6      63    129
## 7      64    132
## 8      65    135
## 9      66    139
## 10     67    142
## 11     68    146
## 12     69    150
## 13     70    154
## 14     71    159
## 15     72    164

Untuk mengetahui informasi terkait dataset, kita dapat menggunakan sintaks ?sebelum nama dataset .

?women

Pada dataset tersebut, kolom weight dan height memiliki value yang tertukar sehingga perlu disesuaikan.

colnames(women)[1] <- "weight"
colnames(women)[2] <- "height"
women
##    weight height
## 1      58    115
## 2      59    117
## 3      60    120
## 4      61    123
## 5      62    126
## 6      63    129
## 7      64    132
## 8      65    135
## 9      66    139
## 10     67    142
## 11     68    146
## 12     69    150
## 13     70    154
## 14     71    159
## 15     72    164

Pada dataset tersebut kita akan menggunakan perintah arrange , mutate ,filter,select, dan summarise. Namun kali ini saya juga akan menambahkan variabel IMT atau Indeks Massa Tubuh berdasarkan variabel Height dan Weight.

Indeks massa tubuh adalah ukuran yang digunakan untuk mengetahui status gizi seseorang yang didapatkan dari perbandingan berat dan tinggi badan. Sumber

Select

Perintah select berfungsi untuk menyeleksi kolom tertentu . Disini saya memilih kolom height dan weight pada dataset

women %>% select(height,weight)
##    height weight
## 1     115     58
## 2     117     59
## 3     120     60
## 4     123     61
## 5     126     62
## 6     129     63
## 7     132     64
## 8     135     65
## 9     139     66
## 10    142     67
## 11    146     68
## 12    150     69
## 13    154     70
## 14    159     71
## 15    164     72

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

women %>% arrange(desc(weight))
##    weight height
## 1      72    164
## 2      71    159
## 3      70    154
## 4      69    150
## 5      68    146
## 6      67    142
## 7      66    139
## 8      65    135
## 9      64    132
## 10     63    129
## 11     62    126
## 12     61    123
## 13     60    120
## 14     59    117
## 15     58    115

Filter

Perintah filter digunakan untuk memilih baris berdasarkan spesifikasi tertentu. Disini saya menampilkan raw dengan spesifikasi weight lebih dari 30

women %>% filter(weight>30)
##    weight height
## 1      58    115
## 2      59    117
## 3      60    120
## 4      61    123
## 5      62    126
## 6      63    129
## 7      64    132
## 8      65    135
## 9      66    139
## 10     67    142
## 11     68    146
## 12     69    150
## 13     70    154
## 14     71    159
## 15     72    164

Mutate

Membuat variabel IMT yang berasal dari operasi variabel height dan weight.

women %>% mutate(IMT=weight/(height/100)**2)
##    weight height      IMT
## 1      58    115 43.85633
## 2      59    117 43.10030
## 3      60    120 41.66667
## 4      61    123 40.31992
## 5      62    126 39.05266
## 6      63    129 37.85830
## 7      64    132 36.73095
## 8      65    135 35.66529
## 9      66    139 34.15972
## 10     67    142 33.22753
## 11     68    146 31.90092
## 12     69    150 30.66667
## 13     70    154 29.51594
## 14     71    159 28.08433
## 15     72    164 26.76978

Summarise

Perintah summarise berfungsi untuk meringkas atau mengagregasi baris data. Saya menampilkan rataan dari variabel weight dan height

women %>% summarise(avg_height=mean(height),avg_weight=mean(height))
##   avg_height avg_weight
## 1   136.7333   136.7333

Melakukan kelima perintah bersamaan

women %>% select(weight,height) %>% arrange(desc(weight))%>% 
filter(weight>30)%>% mutate(IMT=weight/(height/100)**2)%>% summarise(AverageHeight=mean(height),AverageWeight=mean(height))

Update Dataset

Selanjutnya dibuatlah dataset baru yang telah ditambahkan kolom IMT

women2 <- women %>% mutate(IMT=weight/(height/100)**2)
women2
##    weight height      IMT
## 1      58    115 43.85633
## 2      59    117 43.10030
## 3      60    120 41.66667
## 4      61    123 40.31992
## 5      62    126 39.05266
## 6      63    129 37.85830
## 7      64    132 36.73095
## 8      65    135 35.66529
## 9      66    139 34.15972
## 10     67    142 33.22753
## 11     68    146 31.90092
## 12     69    150 30.66667
## 13     70    154 29.51594
## 14     71    159 28.08433
## 15     72    164 26.76978