Tugas Praktikum SD-3

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

Database Connection

  • Database yang digunakan adalah Northwind_large.sqlite
Northwind<-DBI::dbConnect(RSQLite::SQLite(), "D:/01 KULIAH/1 Semester/5. Sains Data/Praktikum/Pertemuan 3/Northwind_large.sqlite")
class(Northwind)
## [1] "SQLiteConnection"
## attr(,"package")
## [1] "RSQLite"
  • Tabel-tabel yang ada pada database Northwind.sqlite adalah
RSQLite::dbListTables(Northwind)
##  [1] "Category"             "Customer"             "CustomerCustomerDemo"
##  [4] "CustomerDemographic"  "Employee"             "EmployeeTerritory"   
##  [7] "Order"                "OrderDetail"          "Product"             
## [10] "ProductDetails_V"     "Region"               "Shipper"             
## [13] "Supplier"             "Territory"

Tabel

  • Tabel yang digunakan untuk praktek ini adalah tabel Supplier dan tabel Customer dengan hanya menggunakan beberapa kolom saja pada tabel dan membatasi jumlah baris sebanyak 10 baris
Supplier <- dbGetQuery(Northwind, sql("SELECT Region, CompanyName, Homepage FROM Supplier LIMIT 10"))
class(Supplier)
## [1] "data.frame"
Customer <- dbGetQuery(Northwind, sql("SELECT Region, ContactName, Phone FROM Customer Region LIMIT 10"))
class(Customer)
## [1] "data.frame"

Fungsi Join

inner_join

  • inner_join() menghasilkan semua baris pada table x yang memiliki kesamaan nilai dengan table y, dan semua kolom dari x dan y. Pada kasus ini data customer akan di gabung dengan data supplier dimana bila ada kesamaan nilai antara variabel key di tabel supplier dan customer.
kbl(inner_join(Supplier,Customer), caption =  "INNER JOIN") %>% kable_styling()
## Joining, by = "Region"
INNER JOIN
Region CompanyName HomePage ContactName Phone
British Isles Exotic Liquids NA Thomas Hardy
  1. 555-7788
North America New Orleans Cajun Delights #CAJUN.HTM# Elizabeth Lincoln
  1. 555-4729
North America Grandma Kelly’s Homestead NA Elizabeth Lincoln
  1. 555-4729
Southern Europe Cooperativa de Quesos ‘Las Cabras’ NA Martín Sommer
  1. 555 22 82
British Isles Specialty Biscuits, Ltd.  NA Thomas Hardy
  1. 555-7788
Northern Europe PB Knäckebröd AB NA Christina Berglund 0921-12 34 65

left_join

  • left_join() menghasilkan semua baris pada table x, dan semua kolom pada x dan y, dimana untuk baris pada x yang tidak memiliki kesamaan dengan y diisi dengan nilai NA pada kolom yang baru.Pada kasus ini data customer akan di gabung dengan data supplier dimana semua data pada variabe key di supplier akan ditampilkan dan bila tidak ada kesamaan nilai antara variabel key di tabel supplier dan customer maka akan bertanda NA.
kbl (left_join(Supplier,Customer), caption =  "LEFT JOIN") %>% kable_styling()
## Joining, by = "Region"
LEFT JOIN
Region CompanyName HomePage ContactName Phone
British Isles Exotic Liquids NA Thomas Hardy
  1. 555-7788
North America New Orleans Cajun Delights #CAJUN.HTM# Elizabeth Lincoln
  1. 555-4729
North America Grandma Kelly’s Homestead NA Elizabeth Lincoln
  1. 555-4729
Eastern Asia Tokyo Traders NA NA NA
Southern Europe Cooperativa de Quesos ‘Las Cabras’ NA Martín Sommer
  1. 555 22 82
Eastern Asia Mayumi’s Mayumi’s (on the World Wide Web)#http://www.microsoft.com/accessdev/sampleapps/mayumi.htm# NA NA
Victoria Pavlova, Ltd.  NA NA NA
British Isles Specialty Biscuits, Ltd.  NA Thomas Hardy
  1. 555-7788
Northern Europe PB Knäckebröd AB NA Christina Berglund 0921-12 34 65
South America Refrescos Americanas LTDA NA NA NA

right_join

  • right_join() menghasilkan semua baris pada table y, dan semua kolom pada x dan y, dimana untuk baris pada y yang tidak memiliki kesamaan dengan x akan diisi dengan nilai NA pada kolom yang baru. Pada kasus ini data supplier akan di gabung dengan data customer dimana semua data pada variabe key di customer akan ditampilkan dan bila tidak ada kesamaan nilai antara variabel key di tabel supplier dan customer maka akan bertanda NA.
kbl(right_join(Supplier,Customer), caption =  "RIGHT JOIN)") %>% kable_styling()
## Joining, by = "Region"
RIGHT JOIN)
Region CompanyName HomePage ContactName Phone
British Isles Exotic Liquids NA Thomas Hardy
  1. 555-7788
North America New Orleans Cajun Delights #CAJUN.HTM# Elizabeth Lincoln
  1. 555-4729
North America Grandma Kelly’s Homestead NA Elizabeth Lincoln
  1. 555-4729
Southern Europe Cooperativa de Quesos ‘Las Cabras’ NA Martín Sommer
  1. 555 22 82
British Isles Specialty Biscuits, Ltd.  NA Thomas Hardy
  1. 555-7788
Northern Europe PB Knäckebröd AB NA Christina Berglund 0921-12 34 65
Western Europe NA NA Maria Anders 030-0074321
Central America NA NA Ana Trujillo
  1. 555-4729
Central America NA NA Antonio Moreno
  1. 555-3932
Western Europe NA NA Hanna Moos 0621-08460
Western Europe NA NA Frédérique Citeaux 88.60.15.31
Western Europe NA NA Laurence Lebihan 91.24.45.40

full_join

  • full_join() menghasilkan semua baris dan kolom dari x dan y. Jika ada nilai yang tidak sama (match) antara x dan y, maka akan bernilai NA. Pada kasus ini data customer akan di gabung dengan data supplier dimana ada atau tidak ada kesamaan nilai antara variabel key di tabel supplier dan customer semua akan tetap ditampilkan.
kbl (full_join(Supplier,Customer), caption =  "FULL JOIN") %>% kable_styling()
## Joining, by = "Region"
FULL JOIN
Region CompanyName HomePage ContactName Phone
British Isles Exotic Liquids NA Thomas Hardy
  1. 555-7788
North America New Orleans Cajun Delights #CAJUN.HTM# Elizabeth Lincoln
  1. 555-4729
North America Grandma Kelly’s Homestead NA Elizabeth Lincoln
  1. 555-4729
Eastern Asia Tokyo Traders NA NA NA
Southern Europe Cooperativa de Quesos ‘Las Cabras’ NA Martín Sommer
  1. 555 22 82
Eastern Asia Mayumi’s Mayumi’s (on the World Wide Web)#http://www.microsoft.com/accessdev/sampleapps/mayumi.htm# NA NA
Victoria Pavlova, Ltd.  NA NA NA
British Isles Specialty Biscuits, Ltd.  NA Thomas Hardy
  1. 555-7788
Northern Europe PB Knäckebröd AB NA Christina Berglund 0921-12 34 65
South America Refrescos Americanas LTDA NA NA NA
Western Europe NA NA Maria Anders 030-0074321
Central America NA NA Ana Trujillo
  1. 555-4729
Central America NA NA Antonio Moreno
  1. 555-3932
Western Europe NA NA Hanna Moos 0621-08460
Western Europe NA NA Frédérique Citeaux 88.60.15.31
Western Europe NA NA Laurence Lebihan 91.24.45.40

semi_join

  • semi_join() menghasilkan semua baris pada table x yang memiliki kesamaan nilai dengan table y, dan semua kolom dari x. Ini mirip dengan inner_join(), bedanya inner_join() mengembalikan semua kolom dari x dan y. Pada kasus ini data customer akan di gabung dengan data supplier dimana bila ada kesamaan nilai antara variabel key di tabel supplier dan customer dan variabel yang ditampilkan hanya variabel yang ada pada tabel supplier.
kbl (semi_join(Supplier,Customer), caption =  "SEMI JOIN") %>% kable_styling()
## Joining, by = "Region"
SEMI JOIN
Region CompanyName HomePage
British Isles Exotic Liquids NA
North America New Orleans Cajun Delights #CAJUN.HTM#
North America Grandma Kelly’s Homestead NA
Southern Europe Cooperativa de Quesos ‘Las Cabras’ NA
British Isles Specialty Biscuits, Ltd.  NA
Northern Europe PB Knäckebröd AB NA

anti_join

  • anti_join() menghasilkan semua baris dari x yang TIDAK memiliki kesamaan dengan y, dan semua kolom yang berasal dari x. Pada kasus ini akan menampilkan data pada variabel key yang tabel supplier dan customer tidak sama dan variabel yang ditampilkan hanya variabel-variabel yang ada pada tabel supplier.
kbl (anti_join(Supplier,Customer), caption =  "ANTI JOIN") %>% kable_styling()
## Joining, by = "Region"
ANTI JOIN
Region CompanyName HomePage
Eastern Asia Tokyo Traders NA
Eastern Asia Mayumi’s Mayumi’s (on the World Wide Web)#http://www.microsoft.com/accessdev/sampleapps/mayumi.htm#
Victoria Pavlova, Ltd.  NA
South America Refrescos Americanas LTDA NA

Data Spasial

  • Package yang digunakan adalah
library(sf)
## Linking to GEOS 3.8.0, GDAL 3.0.4, PROJ 6.3.1
library(tigris)
## To enable 
## caching of data, set `options(tigris_use_cache = TRUE)` in your R script or .Rprofile.

Peta Wilayah Administrasi

  • Peta yang digunakan pada praktikum ini adalah peta Kabupaten Kepulauan Selayar menurut Kecamatan
selayar <- ("D:/01 KULIAH/1 Semester/5. Sains Data/Praktikum/Pertemuan 3/peta/7301_kec.shp")

kep.selayar <- st_read(selayar)
## Reading layer `7301_kec' from data source `D:\01 KULIAH\1 Semester\5. Sains Data\Praktikum\Pertemuan 3\peta\7301_kec.shp' using driver `ESRI Shapefile'
## Simple feature collection with 11 features and 7 fields
## geometry type:  MULTIPOLYGON
## dimension:      XYZ
## bbox:           xmin: 120.2695 ymin: -7.516092 xmax: 121.8402 ymax: -5.73821
## z_range:        zmin: 0 zmax: 0
## geographic CRS: WGS 84
glimpse(kep.selayar)
## Rows: 11
## Columns: 8
## $ PROVNO    <chr> "73", "73", "73", "73", "73", "73", "73", "73", "73", "73...
## $ KABKOTNO  <chr> "01", "01", "01", "01", "01", "01", "01", "01", "01", "01...
## $ KECNO     <chr> "042", "021", "011", "051", "050", "030", "010", "040", "...
## $ PROVINSI  <chr> "SULAWESI SELATAN", "SULAWESI SELATAN", "SULAWESI SELATAN...
## $ KABKOT    <chr> "KEPULAUAN SELAYAR", "KEPULAUAN SELAYAR", "KEPULAUAN SELA...
## $ KECAMATAN <chr> "BONTOMANAI", "TAKABONERATE", "PASILAMBENA", "BUKI", "BON...
## $ id_kec    <int> 7301042, 7301021, 7301011, 7301051, 7301050, 7301030, 730...
## $ geometry  <MULTIPOLYGON [°]> MULTIPOLYGON Z (((120.5554 ..., MULTIPOLYGON...

Data Peta

  • Data yang digunakan dalam percobaan ini adalah data penduduk Kabupaten Kepulauan Selayar menurut Kecamatan
penduduk <- read.csv("D:/01 KULIAH/1 Semester/5. Sains Data/Praktikum/Pertemuan 3/data_7301_new.csv",header = TRUE,sep=",")

kbl (penduduk, caption =  "Jumlah Penduduk Kabupaten Kepulauan Selayar Tahun 2020") %>% kable_styling()
Jumlah Penduduk Kabupaten Kepulauan Selayar Tahun 2020
id_kec KECAMATAN penduduk
7301042 BONTOMANAI 13703
7301021 TAKABONERATE 13484
7301011 PASILAMBENA 8005
7301051 BUKI 6742
7301050 BONTOMATENE 13381
7301030 BONTOSIKUYU 15303
7301010 PASIMARANNU 10492
7301040 BONTOHARU 14608
7301041 BENTENG 24849
7301022 PASIMASSUNGGU TIMUR 7866
7301020 PASIMASSUNGGU 8638

Menggabungkan Data

  • Fungsi ini digunakan untuk menggabungkan data penduduk dengan data attribute peta wilayah dengan fungsi merge
peta_attribute <- geo_join(spatial_data=kep.selayar, 
                                  data_frame=penduduk, by_sp="id_kec", 
                                  by_df="id_kec", how = "inner")

Peta Sebaran

  • Peta yang ditampilkan merupakan berdasarkan tingkatan jumlah penduduk dimana semakin pekat warna-nya berarti jumlah penduduk pada kecamatan tersebut semakin besar
gradient <- c("#e6ffff","#00ffff","#33ccff","#00b3b3" )

dmap <- ggplot()+geom_sf(data=peta_attribute,aes(fill=penduduk
))+ scale_fill_gradientn(colours=gradient)+
  labs(title="Jumlah Penduduk Kabupaten Kepulauan Selayar Tahun 2020")
dmap