TUGAS RESPONSI SAINS DATA

Andika Putri Ratnasari (G1501211018)

2021-09-20

Database Queries with R

Beberapa package yang digunakan untuk bekerja dengan database menggunakan R software adalah DBI, dplyr, dbplyr, dan odbc.

Connection to a Database

Database yang akan digunakan yaitu database "Chinook" yang merupakan data suatu toko media digital, yang di dalamnya terdapat 11 tabel yaitu albums, artists, customers, employees, genres,invoice_items, invoices, media_types, playlist_track, playlists, dan tracks.

  1. Data terkait media digital dibuat menggunakan data nyata dari library Apple iTunes.

  2. Informasi pelanggan dan karyawan dibuat menggunakan nama dan alamat fiktif yang dapat ditemukan di peta Google, dan data lain yang diformat dengan baik (telepon, faks, email, dll.)

  3. Informasi penjualan dibuat secara otomatis menggunakan data acak selama periode empat tahun.

#memanggil package

library(tidyverse)
## Warning: package 'tidyverse' was built under R version 3.5.3
## Warning: package 'tidyr' was built under R version 3.5.3
## Warning: package 'readr' was built under R version 3.5.3
## Warning: package 'purrr' was built under R version 3.5.3
library(dbplyr)
library(RSQLite)
## Warning: package 'RSQLite' was built under R version 3.5.3
library(DBI)

Koneksi terhadap database "Chinook" pada R software:

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

Fungsi dbListTables akan digunakan untuk melihat tables yang terdapat di dalam database "Chinook".

RSQLite::dbListTables(chinook)
##  [1] "albums"          "artists"         "customers"       "employees"      
##  [5] "genres"          "invoice_items"   "invoices"        "media_types"    
##  [9] "playlist_track"  "playlists"       "sqlite_sequence" "sqlite_stat1"   
## [13] "tracks"

Fungsi tbl(database, "table") akan digunakan untuk melihat isi tabel tracks dari database "chinook".

track<-dplyr::tbl(chinook,"tracks")
class(track)
## [1] "tbl_SQLiteConnection" "tbl_dbi"              "tbl_sql"             
## [4] "tbl_lazy"             "tbl"

track merupakan object dengan class tbl yang dapat diperlakukan mirip seperti data.frame.

Berikut adalah isi dari obyek track.

track
## # Source:   table<tracks> [?? x 9]
## # Database: sqlite 3.30.1 [C:\sqlite\db\chinook.db]
##    TrackId Name     AlbumId MediaTypeId GenreId Composer     Milliseconds  Bytes
##      <int> <chr>      <int>       <int>   <int> <chr>               <int>  <int>
##  1       1 For Tho~       1           1       1 Angus Young~       343719 1.12e7
##  2       2 Balls t~       2           2       1 <NA>               342562 5.51e6
##  3       3 Fast As~       3           2       1 F. Baltes, ~       230619 3.99e6
##  4       4 Restles~       3           2       1 F. Baltes, ~       252051 4.33e6
##  5       5 Princes~       3           2       1 Deaffy & R.~       375418 6.29e6
##  6       6 Put The~       1           1       1 Angus Young~       205662 6.71e6
##  7       7 Let's G~       1           1       1 Angus Young~       233926 7.64e6
##  8       8 Inject ~       1           1       1 Angus Young~       210834 6.85e6
##  9       9 Snowbal~       1           1       1 Angus Young~       203102 6.60e6
## 10      10 Evil Wa~       1           1       1 Angus Young~       263497 8.61e6
## # ... with more rows, and 1 more variable: UnitPrice <dbl>

Combining Multiple Tables with dplyr in R

inner_join()

Fungsi inner_join() menghasilkan semua baris pada table x yang memiliki kesamaan nilai dengan table y, dan semua kolom dari x dan y.

album<-dplyr::tbl(chinook,"albums")
album
## # Source:   table<albums> [?? x 3]
## # Database: sqlite 3.30.1 [C:\sqlite\db\chinook.db]
##    AlbumId Title                                 ArtistId
##      <int> <chr>                                    <int>
##  1       1 For Those About To Rock We Salute You        1
##  2       2 Balls to the Wall                            2
##  3       3 Restless and Wild                            2
##  4       4 Let There Be Rock                            1
##  5       5 Big Ones                                     3
##  6       6 Jagged Little Pill                           4
##  7       7 Facelift                                     5
##  8       8 Warner 25 Anos                               6
##  9       9 Plays Metallica By Four Cellos               7
## 10      10 Audioslave                                   8
## # ... with more rows
artis<-dplyr::tbl(chinook,"artists")
artis
## # Source:   table<artists> [?? x 2]
## # Database: sqlite 3.30.1 [C:\sqlite\db\chinook.db]
##    ArtistId Name                
##       <int> <chr>               
##  1        1 AC/DC               
##  2        2 Accept              
##  3        3 Aerosmith           
##  4        4 Alanis Morissette   
##  5        5 Alice In Chains     
##  6        6 Antônio Carlos Jobim
##  7        7 Apocalyptica        
##  8        8 Audioslave          
##  9        9 BackBeat            
## 10       10 Billy Cobham        
## # ... with more rows

Tabel track dan album memiliki data yang sama yaitu Album id. Berikut merupakan hasil penggabungan tabel tracks dan albums dengan inner_join():

inner_join(track,album)
## Joining, by = "AlbumId"
## # Source:   lazy query [?? x 11]
## # Database: sqlite 3.30.1 [C:\sqlite\db\chinook.db]
##    TrackId Name      AlbumId MediaTypeId GenreId Composer    Milliseconds  Bytes
##      <int> <chr>       <int>       <int>   <int> <chr>              <int>  <int>
##  1       1 For Thos~       1           1       1 Angus Youn~       343719 1.12e7
##  2       6 Put The ~       1           1       1 Angus Youn~       205662 6.71e6
##  3       7 Let's Ge~       1           1       1 Angus Youn~       233926 7.64e6
##  4       8 Inject T~       1           1       1 Angus Youn~       210834 6.85e6
##  5       9 Snowball~       1           1       1 Angus Youn~       203102 6.60e6
##  6      10 Evil Wal~       1           1       1 Angus Youn~       263497 8.61e6
##  7      11 C.O.D.          1           1       1 Angus Youn~       199836 6.57e6
##  8      12 Breaking~       1           1       1 Angus Youn~       263288 8.60e6
##  9      13 Night Of~       1           1       1 Angus Youn~       205688 6.71e6
## 10      14 Spellbou~       1           1       1 Angus Youn~       270863 8.82e6
## # ... with more rows, and 3 more variables: UnitPrice <dbl>, Title <chr>,
## #   ArtistId <int>
track %>% inner_join(album)
## Joining, by = "AlbumId"
## # Source:   lazy query [?? x 11]
## # Database: sqlite 3.30.1 [C:\sqlite\db\chinook.db]
##    TrackId Name      AlbumId MediaTypeId GenreId Composer    Milliseconds  Bytes
##      <int> <chr>       <int>       <int>   <int> <chr>              <int>  <int>
##  1       1 For Thos~       1           1       1 Angus Youn~       343719 1.12e7
##  2       6 Put The ~       1           1       1 Angus Youn~       205662 6.71e6
##  3       7 Let's Ge~       1           1       1 Angus Youn~       233926 7.64e6
##  4       8 Inject T~       1           1       1 Angus Youn~       210834 6.85e6
##  5       9 Snowball~       1           1       1 Angus Youn~       203102 6.60e6
##  6      10 Evil Wal~       1           1       1 Angus Youn~       263497 8.61e6
##  7      11 C.O.D.          1           1       1 Angus Youn~       199836 6.57e6
##  8      12 Breaking~       1           1       1 Angus Youn~       263288 8.60e6
##  9      13 Night Of~       1           1       1 Angus Youn~       205688 6.71e6
## 10      14 Spellbou~       1           1       1 Angus Youn~       270863 8.82e6
## # ... with more rows, and 3 more variables: UnitPrice <dbl>, Title <chr>,
## #   ArtistId <int>

Tabel artis dan album memiliki data yang sama yaitu Artist id. Berikut merupakan hasil penggabungan tabel artists dan albums dengan inner_join():

inner_join(artis,album)
## Joining, by = "ArtistId"
## # Source:   lazy query [?? x 4]
## # Database: sqlite 3.30.1 [C:\sqlite\db\chinook.db]
##    ArtistId Name                 AlbumId Title                                
##       <int> <chr>                  <int> <chr>                                
##  1        1 AC/DC                      1 For Those About To Rock We Salute You
##  2        2 Accept                     2 Balls to the Wall                    
##  3        2 Accept                     3 Restless and Wild                    
##  4        1 AC/DC                      4 Let There Be Rock                    
##  5        3 Aerosmith                  5 Big Ones                             
##  6        4 Alanis Morissette          6 Jagged Little Pill                   
##  7        5 Alice In Chains            7 Facelift                             
##  8        6 Antônio Carlos Jobim       8 Warner 25 Anos                       
##  9        7 Apocalyptica               9 Plays Metallica By Four Cellos       
## 10        8 Audioslave                10 Audioslave                           
## # ... with more rows

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.

Berikut merupakan hasil penggabungan tabel tracks dan albums dengan left_join():

left_join(track, album)
## Joining, by = "AlbumId"
## # Source:   lazy query [?? x 11]
## # Database: sqlite 3.30.1 [C:\sqlite\db\chinook.db]
##    TrackId Name     AlbumId MediaTypeId GenreId Composer     Milliseconds  Bytes
##      <int> <chr>      <int>       <int>   <int> <chr>               <int>  <int>
##  1       1 For Tho~       1           1       1 Angus Young~       343719 1.12e7
##  2       2 Balls t~       2           2       1 <NA>               342562 5.51e6
##  3       3 Fast As~       3           2       1 F. Baltes, ~       230619 3.99e6
##  4       4 Restles~       3           2       1 F. Baltes, ~       252051 4.33e6
##  5       5 Princes~       3           2       1 Deaffy & R.~       375418 6.29e6
##  6       6 Put The~       1           1       1 Angus Young~       205662 6.71e6
##  7       7 Let's G~       1           1       1 Angus Young~       233926 7.64e6
##  8       8 Inject ~       1           1       1 Angus Young~       210834 6.85e6
##  9       9 Snowbal~       1           1       1 Angus Young~       203102 6.60e6
## 10      10 Evil Wa~       1           1       1 Angus Young~       263497 8.61e6
## # ... with more rows, and 3 more variables: UnitPrice <dbl>, Title <chr>,
## #   ArtistId <int>

Berikut merupakan hasil penggabungan tabel artist dan albums dengan left_join():

left_join(artis, album)
## Joining, by = "ArtistId"
## # Source:   lazy query [?? x 4]
## # Database: sqlite 3.30.1 [C:\sqlite\db\chinook.db]
##    ArtistId Name                 AlbumId Title                                
##       <int> <chr>                  <int> <chr>                                
##  1        1 AC/DC                      1 For Those About To Rock We Salute You
##  2        1 AC/DC                      4 Let There Be Rock                    
##  3        2 Accept                     2 Balls to the Wall                    
##  4        2 Accept                     3 Restless and Wild                    
##  5        3 Aerosmith                  5 Big Ones                             
##  6        4 Alanis Morissette          6 Jagged Little Pill                   
##  7        5 Alice In Chains            7 Facelift                             
##  8        6 Antônio Carlos Jobim       8 Warner 25 Anos                       
##  9        6 Antônio Carlos Jobim      34 Chill: Brazil (Disc 2)               
## 10        7 Apocalyptica               9 Plays Metallica By Four Cellos       
## # ... with more rows

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.

Berikut merupakan hasil penggabungan tabel tracks dan albums dengan right_join():

right_join(track, album)
## Joining, by = "AlbumId"
## # Source:   lazy query [?? x 11]
## # Database: sqlite 3.30.1 [C:\sqlite\db\chinook.db]
##    TrackId Name      AlbumId MediaTypeId GenreId Composer    Milliseconds  Bytes
##      <int> <chr>       <int>       <int>   <int> <chr>              <int>  <int>
##  1       1 For Thos~       1           1       1 Angus Youn~       343719 1.12e7
##  2       6 Put The ~       1           1       1 Angus Youn~       205662 6.71e6
##  3       7 Let's Ge~       1           1       1 Angus Youn~       233926 7.64e6
##  4       8 Inject T~       1           1       1 Angus Youn~       210834 6.85e6
##  5       9 Snowball~       1           1       1 Angus Youn~       203102 6.60e6
##  6      10 Evil Wal~       1           1       1 Angus Youn~       263497 8.61e6
##  7      11 C.O.D.          1           1       1 Angus Youn~       199836 6.57e6
##  8      12 Breaking~       1           1       1 Angus Youn~       263288 8.60e6
##  9      13 Night Of~       1           1       1 Angus Youn~       205688 6.71e6
## 10      14 Spellbou~       1           1       1 Angus Youn~       270863 8.82e6
## # ... with more rows, and 3 more variables: UnitPrice <dbl>, Title <chr>,
## #   ArtistId <int>

Berikut merupakan hasil penggabungan tabel artist dan genres dengan right_join():

right_join(artis, album)
## Joining, by = "ArtistId"
## # Source:   lazy query [?? x 4]
## # Database: sqlite 3.30.1 [C:\sqlite\db\chinook.db]
##    ArtistId Name                 AlbumId Title                                
##       <int> <chr>                  <int> <chr>                                
##  1        1 AC/DC                      1 For Those About To Rock We Salute You
##  2        2 Accept                     2 Balls to the Wall                    
##  3        2 Accept                     3 Restless and Wild                    
##  4        1 AC/DC                      4 Let There Be Rock                    
##  5        3 Aerosmith                  5 Big Ones                             
##  6        4 Alanis Morissette          6 Jagged Little Pill                   
##  7        5 Alice In Chains            7 Facelift                             
##  8        6 Antônio Carlos Jobim       8 Warner 25 Anos                       
##  9        7 Apocalyptica               9 Plays Metallica By Four Cellos       
## 10        8 Audioslave                10 Audioslave                           
## # ... with more rows

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.

Berikut merupakan hasil penggabungan tabel tracks dan albums dengan full_join():

full_join(track, album)
## Joining, by = "AlbumId"
## # Source:   lazy query [?? x 11]
## # Database: sqlite 3.30.1 [C:\sqlite\db\chinook.db]
##    TrackId Name     AlbumId MediaTypeId GenreId Composer     Milliseconds  Bytes
##      <int> <chr>      <int>       <int>   <int> <chr>               <int>  <int>
##  1       1 For Tho~       1           1       1 Angus Young~       343719 1.12e7
##  2       2 Balls t~       2           2       1 <NA>               342562 5.51e6
##  3       3 Fast As~       3           2       1 F. Baltes, ~       230619 3.99e6
##  4       4 Restles~       3           2       1 F. Baltes, ~       252051 4.33e6
##  5       5 Princes~       3           2       1 Deaffy & R.~       375418 6.29e6
##  6       6 Put The~       1           1       1 Angus Young~       205662 6.71e6
##  7       7 Let's G~       1           1       1 Angus Young~       233926 7.64e6
##  8       8 Inject ~       1           1       1 Angus Young~       210834 6.85e6
##  9       9 Snowbal~       1           1       1 Angus Young~       203102 6.60e6
## 10      10 Evil Wa~       1           1       1 Angus Young~       263497 8.61e6
## # ... with more rows, and 3 more variables: UnitPrice <dbl>, Title <chr>,
## #   ArtistId <int>

Berikut merupakan hasil penggabungan tabel artist dan albums dengan full_join():

full_join(artis, album)
## Joining, by = "ArtistId"
## # Source:   lazy query [?? x 4]
## # Database: sqlite 3.30.1 [C:\sqlite\db\chinook.db]
##    ArtistId Name                 AlbumId Title                                
##       <int> <chr>                  <int> <chr>                                
##  1        1 AC/DC                      1 For Those About To Rock We Salute You
##  2        1 AC/DC                      4 Let There Be Rock                    
##  3        2 Accept                     2 Balls to the Wall                    
##  4        2 Accept                     3 Restless and Wild                    
##  5        3 Aerosmith                  5 Big Ones                             
##  6        4 Alanis Morissette          6 Jagged Little Pill                   
##  7        5 Alice In Chains            7 Facelift                             
##  8        6 Antônio Carlos Jobim       8 Warner 25 Anos                       
##  9        6 Antônio Carlos Jobim      34 Chill: Brazil (Disc 2)               
## 10        7 Apocalyptica               9 Plays Metallica By Four Cellos       
## # ... with more rows

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.

Berikut merupakan hasil penggabungan tabel tracks dan albums dengan semi_join():

semi_join(track, album)
## Joining, by = "AlbumId"
## # Source:   lazy query [?? x 9]
## # Database: sqlite 3.30.1 [C:\sqlite\db\chinook.db]
##    TrackId Name     AlbumId MediaTypeId GenreId Composer     Milliseconds  Bytes
##      <int> <chr>      <int>       <int>   <int> <chr>               <int>  <int>
##  1       1 For Tho~       1           1       1 Angus Young~       343719 1.12e7
##  2       2 Balls t~       2           2       1 <NA>               342562 5.51e6
##  3       3 Fast As~       3           2       1 F. Baltes, ~       230619 3.99e6
##  4       4 Restles~       3           2       1 F. Baltes, ~       252051 4.33e6
##  5       5 Princes~       3           2       1 Deaffy & R.~       375418 6.29e6
##  6       6 Put The~       1           1       1 Angus Young~       205662 6.71e6
##  7       7 Let's G~       1           1       1 Angus Young~       233926 7.64e6
##  8       8 Inject ~       1           1       1 Angus Young~       210834 6.85e6
##  9       9 Snowbal~       1           1       1 Angus Young~       203102 6.60e6
## 10      10 Evil Wa~       1           1       1 Angus Young~       263497 8.61e6
## # ... with more rows, and 1 more variable: UnitPrice <dbl>

Berikut merupakan hasil penggabungan tabel artist dan albums dengan semi_join():

semi_join(artis, album)
## Joining, by = "ArtistId"
## # Source:   lazy query [?? x 2]
## # Database: sqlite 3.30.1 [C:\sqlite\db\chinook.db]
##    ArtistId Name                
##       <int> <chr>               
##  1        1 AC/DC               
##  2        2 Accept              
##  3        3 Aerosmith           
##  4        4 Alanis Morissette   
##  5        5 Alice In Chains     
##  6        6 Antônio Carlos Jobim
##  7        7 Apocalyptica        
##  8        8 Audioslave          
##  9        9 BackBeat            
## 10       10 Billy Cobham        
## # ... with more rows

anti_join()

anti_join() menghasilkan semua baris dari x yang tidak memiliki kesamaan dengan y, dan semua kolom yang berasal dari x.

Berikut merupakan hasil penggabungan tabel tracks dan albums dengan anti_join():

anti_join(track, album)
## Joining, by = "AlbumId"
## # Source:   lazy query [?? x 9]
## # Database: sqlite 3.30.1 [C:\sqlite\db\chinook.db]
## # ... with 9 variables: TrackId <int>, Name <chr>, AlbumId <int>,
## #   MediaTypeId <int>, GenreId <int>, Composer <chr>, Milliseconds <int>,
## #   Bytes <int>, UnitPrice <dbl>

Berikut merupakan hasil penggabungan tabel artist dan albums dengan anti_join():

anti_join(artis, album)
## Joining, by = "ArtistId"
## # Source:   lazy query [?? x 2]
## # Database: sqlite 3.30.1 [C:\sqlite\db\chinook.db]
##    ArtistId Name                      
##       <int> <chr>                     
##  1       25 Milton Nascimento & Bebeto
##  2       26 Azymuth                   
##  3       28 João Gilberto             
##  4       29 Bebel Gilberto            
##  5       30 Jorge Vercilo             
##  6       31 Baby Consuelo             
##  7       32 Ney Matogrosso            
##  8       33 Luiz Melodia              
##  9       34 Nando Reis                
## 10       35 Pedro Luís & A Parede     
## # ... with more rows

Peta Choropleth

#Memanggil package
library(sf)
## Warning: package 'sf' was built under R version 3.5.3
library(ggplot2)
library(tigris)
library(dplyr)

Reading Spatial Data

Salah satu tipe data spasial yang paling umum digunakan adalah shapefile.Data yang akan digunakan adalah Indonesia - Subnational Administrative Boundaries.

Memasukkan Data SHP

Admin3Kecamatan<-"C:/Users/Userdjc/Downloads/Admin3Kecamatan/idn_admbnda_adm3_bps_20200401.shp"

glimpse(Admin3Kecamatan) #untuk mengetahui seperti apa file SHP tersebut di R
##  chr "C:/Users/Userdjc/Downloads/Admin3Kecamatan/idn_admbnda_adm3_bps_20200401.shp"
Kecamatan<-st_read(Admin3Kecamatan) 
## Reading layer `idn_admbnda_adm3_bps_20200401' from data source `C:\Users\Userdjc\Downloads\Admin3Kecamatan\idn_admbnda_adm3_bps_20200401.shp' using driver `ESRI Shapefile'
## Simple feature collection with 7069 features and 16 fields
## geometry type:  MULTIPOLYGON
## dimension:      XY
## bbox:           xmin: 95.01079 ymin: -11.00762 xmax: 141.0194 ymax: 6.07693
## CRS:            4326
glimpse(Kecamatan)
## Rows: 7,069
## Columns: 17
## $ Shape_Leng <dbl> 0.2798656, 0.7514001, 0.6900061, 0.6483629, 0.2437073, 1.35~
## $ Shape_Area <dbl> 0.003107633, 0.016925540, 0.024636382, 0.010761277, 0.00116~
## $ ADM3_EN    <fct> 2 X 11 Enam Lingkung, 2 X 11 Kayu Tanam, Abab, Abang, Abeli~
## $ ADM3_PCODE <fct> ID1306050, ID1306052, ID1612030, ID5107050, ID7471021, ID94~
## $ ADM3_REF   <fct> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,~
## $ ADM3ALT1EN <fct> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,~
## $ ADM3ALT2EN <fct> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,~
## $ ADM2_EN    <fct> Padang Pariaman, Padang Pariaman, Penukal Abab Lematang Ili~
## $ ADM2_PCODE <fct> ID1306, ID1306, ID1612, ID5107, ID7471, ID9432, ID9471, ID5~
## $ ADM1_EN    <fct> Sumatera Barat, Sumatera Barat, Sumatera Selatan, Bali, Sul~
## $ ADM1_PCODE <fct> ID13, ID13, ID16, ID51, ID74, ID94, ID94, ID51, ID94, ID74,~
## $ ADM0_EN    <fct> Indonesia, Indonesia, Indonesia, Indonesia, Indonesia, Indo~
## $ ADM0_PCODE <fct> ID, ID, ID, ID, ID, ID, ID, ID, ID, ID, ID, ID, ID, ID, ID,~
## $ date       <date> 2019-12-20, 2019-12-20, 2019-12-20, 2019-12-20, 2019-12-20~
## $ validOn    <date> 2020-04-01, 2020-04-01, 2020-04-01, 2020-04-01, 2020-04-01~
## $ validTo    <date> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA~
## $ geometry   <MULTIPOLYGON [°]> MULTIPOLYGON (((100.2811 -0..., MULTIPOLYGON (~

Memasukkan Data via File CSV

File csv diperoleh dari file dengan dbf yang diberi tambahan 1 kolom. Pada file ini kolom tersebut diberi nama "DATA". Kolom ini berisi data jumlah penduduk setiap Kecamatan di Kabupaten Sragen, Jawa Tengah.

library(readxl)

#Sragen dalam Jateng
Sragen1<-read.csv("C:/Users/Userdjc/Downloads/Admin3Kecamatan/Book2.csv", header=TRUE, sep=",")
head(Sragen1)
##   Shape_Leng  Shape_Area   ADM3_EN ADM3_PCODE DATA1
## 1  0.3727597 0.003650121  Adimulyo  ID3305150    NA
## 2  0.4443955 0.006079204   Adipala  ID3301150    NA
## 3  0.3902572 0.002185526  Adiwerna  ID3328120    NA
## 4  0.4192293 0.005623467 Ajibarang  ID3302140    NA
## 5  0.4399723 0.004725463     Alian  ID3305110    NA
## 6  0.4337687 0.005262669     Ambal  ID3305070    NA
#Sragen
Sragen2<-read.csv("C:/Users/Userdjc/Downloads/Admin3Kecamatan/Book1.csv", header=TRUE, sep=",")
head(Sragen2)
##   Shape_Leng  Shape_Area      ADM3_EN ADM3_PCODE  DATA
## 1  0.3092829 0.003338914     Gemolong  ID3314130 52034
## 2  0.3200770 0.003334890         Gesi  ID3314180 23073
## 3  0.3752326 0.003876304      Gondang  ID3314060 48335
## 4  0.5152509 0.005959267        Jenar  ID3314200 29074
## 5  0.3596760 0.003877339    Kalijambe  ID3314010 53071
## 6  0.4583889 0.003782720 Karangmalang  ID3314090 70908
#Kecamatan Gemolong, Sragen
Sragen3<-read.csv("C:/Users/Userdjc/Downloads/Admin3Kecamatan/Book3.csv", header=TRUE, sep=",")
head(Sragen3)
##   Shape_Leng  Shape_Area      ADM3_EN ADM3_PCODE  DATA
## 1  0.3092829 0.003338914     Gemolong  ID3314130 52034
## 2  0.3200770 0.003334890         Gesi  ID3314180    NA
## 3  0.3752326 0.003876304      Gondang  ID3314060    NA
## 4  0.5152509 0.005959267        Jenar  ID3314200    NA
## 5  0.3596760 0.003877339    Kalijambe  ID3314010    NA
## 6  0.4583889 0.003782720 Karangmalang  ID3314090    NA

Merge Data

Merge Data dilakukan dengan memmbandingkan primary key antara Spatial Data (Kecamatan hasil import file SHP) dan Data Frame (Sragen hasil Import File CSV).

#Merge Sragen dalam Jateng
merged_Sragen1 <- geo_join(spatial_data=Kecamatan, 
                                  data_frame=Sragen1, by_sp="ADM3_PCODE", 
                                  by_df="ADM3_PCODE", how = "inner")
## Warning: We recommend using the dplyr::*_join() family of functions instead.
#Merge Sragen 
merged_Sragen2 <- geo_join(spatial_data=Kecamatan, 
                                  data_frame=Sragen2, by_sp="ADM3_PCODE", 
                                  by_df="ADM3_PCODE", how = "inner")
## Warning: We recommend using the dplyr::*_join() family of functions instead.
#Merge Gemolong, Sragen
merged_Sragen3 <- geo_join(spatial_data=Kecamatan, 
                                  data_frame=Sragen3, by_sp="ADM3_PCODE", 
                                  by_df="ADM3_PCODE", how = "inner")
## Warning: We recommend using the dplyr::*_join() family of functions instead.

Atur Warna

Mengatur warna yang akan ditampilkan pada peta:

mycol1 <- c("white","pink", "red3")
mycol2 <- c("white","yellow", "orange")
mycol3 <- c("green")

Menampilkan Plot Peta Chloropleth

pDATA1<-ggplot()+
  geom_sf(data=merged_Sragen1,aes(fill=DATA1))+
  scale_fill_gradientn(colours=mycol2)+
  labs(title="Peta Kabupaten Sragen dalam Jawa Tengah")
pDATA1

pDATA2<-ggplot()+
  geom_sf(data=merged_Sragen2,aes(fill=DATA))+
  scale_fill_gradientn(colours=mycol1)+
  labs(title="Peta Kabupaten Sragen")
pDATA2

pDATA3<-ggplot()+
  geom_sf(data=merged_Sragen3,aes(fill=DATA))+
  scale_fill_gradientn(colours=mycol3)+
  labs(title="Peta Kecamatan Gemolong dalam Kabupaten Sragen")
pDATA3