A. Akses dan Wrangling Database di R dengan Engine SQL ~
Akses database Company.db menggunakan fungsi dbconnect() dan SQLite() dari library DBI dan RSQLite
db <- DBI::dbConnect(RSQLite::SQLite(),"D:/Users/Documents/MANDAREL/Company.db")
Menampilkan data EMPLOYEE
SELECT
*
FROM
EMPLOYEE;
8 records
Fname
Minit
Lname
Ssn
Bdate
Address
Sex
Salary
Super_ssn
Dno
John
B
Smith
123456789
1965-01-09
731 Fondren, Houston TX
M
30000
333445555
5
Franklin
T
Wong
333445555
1965-12-08
638 Voss, Houston TX
M
40000
888665555
5
Alicia
J
Zelaya
999887777
1968-01-19
3321 Castle, Spring TX
F
25000
987654321
4
Jennifer
S
Wallace
987654321
1941-06-20
291 Berry, Bellaire TX
F
43000
888665555
4
Ramesh
K
Narayan
666884444
1962-09-15
975 Fire Oak, Humble TX
M
38000
333445555
5
Joyce
A
English
453453453
1972-07-31
5631 Rice, Houston TX
F
25000
333445555
5
Ahmad
V
Jabbar
987987987
1969-03-29
980 Dallas, Houston TX
M
25000
987654321
4
James
E
Borg
888665555
1937-11-10
450 Stone, Houston TX
M
55000
NA
1
Melakukan wrangling database dengan ketentuan berikut
/*Pilih variabel Fname, Minit, Lname yang digabungkan menjadi nama lengkap, kemudian Ssn, Sex, Salary, dan Dno, masing-masing disimpan dengan nama tertentu, lalu konversi variabel Bdate (tanggal lahir) pada substring yang menunjukkan tahun kelahiran bagi pegawai dengan rentang gaji lebih besar dari 30000 serta telah terurut berdasarkan tahun kelahiran*/
SELECT
Fname ||' '|| Minit||' '||Lname as Nama_Lengkap, Ssn as Nomor_Induk_Pegawai, Sex as Jenis_Kelamin, substring(Bdate,1,4) as Tahun_Lahir, Salary as Gaji, Dno as Nomor_Departemen
FROM
EMPLOYEE
WHERE
Gaji>30000
ORDER BY
Tahun_Lahir;
4 records
Nama_Lengkap
Nomor_Induk_Pegawai
Jenis_Kelamin
Tahun_Lahir
Gaji
Nomor_Departemen
James E Borg
888665555
M
1937
55000
1
Jennifer S Wallace
987654321
F
1941
43000
4
Ramesh K Narayan
666884444
M
1962
38000
5
Franklin T Wong
333445555
M
1965
40000
5
B. Akses dan Wrangling Database di R dengan dplyr ~
Mengakses database Company.db dengan dbConnect() dan disimpan dalam objek baru
## # Source: table<EMPLOYEE> [?? x 10]
## # Database: sqlite 3.37.0 [D:\Users\Documents\MANDAREL\Company.db]
## Fname Minit Lname Ssn Bdate Address Sex Salary Super_ssn Dno
## <chr> <chr> <chr> <chr> <chr> <chr> <chr> <int> <chr> <int>
## 1 John B Smith 123456789 1965-~ 731 Fond~ M 30000 333445555 5
## 2 Franklin T Wong 333445555 1965-~ 638 Voss~ M 40000 888665555 5
## 3 Alicia J Zelaya 999887777 1968-~ 3321 Cas~ F 25000 987654321 4
## 4 Jennifer S Wallace 987654321 1941-~ 291 Berr~ F 43000 888665555 4
## 5 Ramesh K Narayan 666884444 1962-~ 975 Fire~ M 38000 333445555 5
## 6 Joyce A English 453453453 1972-~ 5631 Ric~ F 25000 333445555 5
## 7 Ahmad V Jabbar 987987987 1969-~ 980 Dall~ M 25000 987654321 4
## 8 James E Borg 888665555 1937-~ 450 Ston~ M 55000 <NA> 1
Mendapatkan data Employee dengan ketentuan tertentu
Filter <- Employee%>%filter(Dno>3 & Salary>25000)%>% #Employee dengan Dno > 3 yang gajinya minimal 25000
select(Sex, Salary)%>% #Fokus pada atribut Jenis kelamin dan gaji
group_by(Sex) #Kelompokkan berdasarkan jenis kelamin
Menampilkan hasil filter beserta query SQL-nya
Filter; show_query(Filter)
## # Source: lazy query [?? x 2]
## # Database: sqlite 3.37.0 [D:\Users\Documents\MANDAREL\Company.db]
## # Groups: Sex
## Sex Salary
## <chr> <int>
## 1 M 30000
## 2 M 40000
## 3 F 43000
## 4 M 38000
## <SQL>
## SELECT `Sex`, `Salary`
## FROM `EMPLOYEE`
## WHERE (`Dno` > 3.0 AND `Salary` > 25000.0)
Melakukan spesifikasi (refilter) data yang ingin diamati
Hasil <- Filter%>%summarize(Jumlah_Pegawai=count(Salary), #Dapatkan jumlah pegawai berdasarkan banyak record gaji
Rataan_Gaji_Pegawai_Dept5=mean(Salary)); #Kemudian dihitung rataan gaji pegawai
Setelah wrangling dilakukan, simpan ke dalam objek Hasil, lalu tampilkan beserta query SQL-nya
Hasil; show_query(Hasil)
## Warning: Missing values are always removed in SQL.
## Use `mean(x, na.rm = TRUE)` to silence this warning
## This warning is displayed only once per session.
## # Source: lazy query [?? x 3]
## # Database: sqlite 3.37.0 [D:\Users\Documents\MANDAREL\Company.db]
## Sex Jumlah_Pegawai Rataan_Gaji_Pegawai_Dept5
## <chr> <int> <dbl>
## 1 F 1 43000
## 2 M 3 36000
## <SQL>
## SELECT `Sex`, count(`Salary`) AS `Jumlah_Pegawai`, AVG(`Salary`) AS `Rataan_Gaji_Pegawai_Dept5`
## FROM (SELECT `Sex`, `Salary`
## FROM `EMPLOYEE`
## WHERE (`Dno` > 3.0 AND `Salary` > 25000.0))
## GROUP BY `Sex`
C. Akses dan Wrangling Dataset di R dengan dplyr ~
Mengakses data CO2 yang ada pada paket dataset di R
#Menambahkan peubah baru bernama Rasio.Serapan yang merupakan hasil dari perbandingan rataan serapan terhadap konsentrasi CO2 pada tanaman. Data diurutkan secara descending berdasarkan Rasio.Serapan, lalu menghilangkan atribut Rataan Konsentrasi dengan Rataan Serapan dan disimpan dalam objek final dengan nama Data.CO2
Data.CO2 <- CO2.NEW%>%mutate(Rasio.Serapan.CO2=round(`Rataan Serapan`/`Rataan Konsentrasi`, 3))%>%select(-`Rataan Konsentrasi`,-`Rataan Serapan`)%>%arrange(desc(Rasio.Serapan.CO2));Data.CO2
## # A tibble: 3 x 2
## Tanaman Rasio.Serapan.CO2
## <ord> <dbl>
## 1 Mc1 0.041
## 2 Mc3 0.039
## 3 Mc2 0.028