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.
Data terkait media digital dibuat menggunakan data nyata dari library Apple iTunes.
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.)
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