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 DBI
untuk 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:")
<-DBI::dbConnect(RSQLite::SQLite(), "C:/sqlite/chinook.db") db
D. Melihat List Entity
::dbListTables(db) RSQLite
## [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
||' '|| Minit||' '||Lname as Name, Ssn , Sex , substring(Bdate,1,4) as Birth, Salary , Dno
Fname FROM
employeeORDER BY
Salary;
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
<- DBI::dbConnect(RSQLite::SQLite(), "C:/sqlite/chinook.db") db
B. Mengambil Entity
Sintaks tersebut memerintahkan untuk mengambil entity EMPLOYEE
dalam format tibble
dan disimpan pada variabel baru employee
<- dplyr::tbl(db,"EMPLOYEE") 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
<-employee %>% filter(Sex= "M" & Salary >1000)
query ::show_query(query) dplyr
## <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
%>% select(height,weight) women
## 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()
%>% arrange(desc(weight)) women
## 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
%>% filter(weight>30) 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
Mutate
Membuat variabel IMT
yang berasal dari operasi variabel height
dan weight
.
%>% mutate(IMT=weight/(height/100)**2) women
## 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
%>% summarise(avg_height=mean(height),avg_weight=mean(height)) women
## avg_height avg_weight
## 1 136.7333 136.7333
Melakukan kelima perintah bersamaan
%>% select(weight,height) %>% arrange(desc(weight))%>%
women 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
<- women %>% mutate(IMT=weight/(height/100)**2)
women2 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