Penggunaan SQL di R dan Peta Choropleth

Az Zahra Amon Ra

2/28/2021

Link Rpubs: https://rpubs.com/azzahramonra/PenggunaanSQLdiRdanPetaChoropleth

Penggunaan inner_join(), left_join(), right_join(), full_join(), semi_join(), anti_join() untuk menggabungkan 2 table atau lebih dari database chinook.db

library(DBI)
library(odbc)
library(RSQLite)
library(tidyverse)
## ── Attaching packages ─────────────────────────────────────── tidyverse 1.3.0 ──
## ✓ ggplot2 3.3.3     ✓ purrr   0.3.4
## ✓ tibble  3.0.6     ✓ dplyr   1.0.2
## ✓ tidyr   1.1.1     ✓ stringr 1.4.0
## ✓ readr   1.3.1     ✓ forcats 0.5.0
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## x dplyr::filter() masks stats::filter()
## x dplyr::lag()    masks stats::lag()
library(dplyr)

Pertama-tama, jangan lupa untuk memanggil package yang akan digunakan dengan menggunakan sintaks diatas. Selanjutnya unduh Database Chinook dan simpan pada folder sqlite/db/

Chinook<-DBI::dbConnect(RSQLite::SQLite(), "Downloads/sqlite/db/chinook.db")
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"

Hubungkan database Chinook tersebut dengan menggunakan fungsi dbConnect dan simpan pada objek Chinook seperti pada sintaks di atas. Gunakan fungsi dbListTables untuk melihat tables yang terdapat di dalam database Chinook.

playlist_track<-dplyr::tbl(Chinook,"playlist_track")
playlist_track
## # Source:   table<playlist_track> [?? x 2]
## # Database: sqlite 3.34.0 [/Users/azzahraamonra/Downloads/sqlite/db/chinook.db]
##    PlaylistId TrackId
##         <int>   <int>
##  1          1    3402
##  2          1    3389
##  3          1    3390
##  4          1    3391
##  5          1    3392
##  6          1    3393
##  7          1    3394
##  8          1    3395
##  9          1    3396
## 10          1    3397
## # … with more rows

fungsi tbl(database, “table”) digunakan untuk mengakses tabel pada database dari package dplyr. Misalkan ingin melihat isi tabel playlist_track dari database Chinook. Berikut adalah isi dari obyek playlist_track

playlist_track=as.data.frame(playlist_track)
invoices<-dplyr::tbl(Chinook,"invoices")
invoice_items<-dplyr::tbl(Chinook,"invoice_items")
invoices=as.data.frame(invoices)
invoice_items=as.data.frame(invoice_items)

Selanjutnya kita akan menggunakan tabel invoices dan tabel invoices_items juga dari database Chinook dengan sintaks di atas. Untuk dapat menjalankan fungsi inner_join(), left_join(), right_join(), full_join(), semi_join(), anti_join() sebaiknya ubah kedalam data frame terlebih dahulu

inner=playlist_track %>% inner_join(invoice_items)
## Joining, by = "TrackId"
inner[1:15,]
##    PlaylistId TrackId InvoiceLineId InvoiceId UnitPrice Quantity
## 1           1    3391          1704       313      0.99        1
## 2           1    3392           559       103      0.99        1
## 3           1    3396          1132       208      0.99        1
## 4           1    3400          1705       313      0.99        1
## 5           1    3401           560       103      0.99        1
## 6           1    3478           568       104      0.99        1
## 7           1    3378          1130       208      0.99        1
## 8           1    3382          1703       313      0.99        1
## 9           1    3383           558       103      0.99        1
## 10          1    3387          1131       208      0.99        1
## 11          1    3365           556       103      0.99        1
## 12          1    3369          1129       208      0.99        1
## 13          1    3373          1702       313      0.99        1
## 14          1    3374           557       103      0.99        1
## 15          1      99            22         5      0.99        1
left_join(playlist_track,invoice_items)[1:15,]
## Joining, by = "TrackId"
##    PlaylistId TrackId InvoiceLineId InvoiceId UnitPrice Quantity
## 1           1    3402            NA        NA        NA       NA
## 2           1    3389            NA        NA        NA       NA
## 3           1    3390            NA        NA        NA       NA
## 4           1    3391          1704       313      0.99        1
## 5           1    3392           559       103      0.99        1
## 6           1    3393            NA        NA        NA       NA
## 7           1    3394            NA        NA        NA       NA
## 8           1    3395            NA        NA        NA       NA
## 9           1    3396          1132       208      0.99        1
## 10          1    3397            NA        NA        NA       NA
## 11          1    3398            NA        NA        NA       NA
## 12          1    3399            NA        NA        NA       NA
## 13          1    3400          1705       313      0.99        1
## 14          1    3401           560       103      0.99        1
## 15          1    3336            NA        NA        NA       NA
right_join(playlist_track,invoice_items)[1:15,]
## Joining, by = "TrackId"
##    PlaylistId TrackId InvoiceLineId InvoiceId UnitPrice Quantity
## 1           1    3391          1704       313      0.99        1
## 2           1    3392           559       103      0.99        1
## 3           1    3396          1132       208      0.99        1
## 4           1    3400          1705       313      0.99        1
## 5           1    3401           560       103      0.99        1
## 6           1    3478           568       104      0.99        1
## 7           1    3378          1130       208      0.99        1
## 8           1    3382          1703       313      0.99        1
## 9           1    3383           558       103      0.99        1
## 10          1    3387          1131       208      0.99        1
## 11          1    3365           556       103      0.99        1
## 12          1    3369          1129       208      0.99        1
## 13          1    3373          1702       313      0.99        1
## 14          1    3374           557       103      0.99        1
## 15          1      99            22         5      0.99        1
full_join(playlist_track,invoice_items)[1:15,]
## Joining, by = "TrackId"
##    PlaylistId TrackId InvoiceLineId InvoiceId UnitPrice Quantity
## 1           1    3402            NA        NA        NA       NA
## 2           1    3389            NA        NA        NA       NA
## 3           1    3390            NA        NA        NA       NA
## 4           1    3391          1704       313      0.99        1
## 5           1    3392           559       103      0.99        1
## 6           1    3393            NA        NA        NA       NA
## 7           1    3394            NA        NA        NA       NA
## 8           1    3395            NA        NA        NA       NA
## 9           1    3396          1132       208      0.99        1
## 10          1    3397            NA        NA        NA       NA
## 11          1    3398            NA        NA        NA       NA
## 12          1    3399            NA        NA        NA       NA
## 13          1    3400          1705       313      0.99        1
## 14          1    3401           560       103      0.99        1
## 15          1    3336            NA        NA        NA       NA
semi_join(playlist_track,invoice_items)[1:15,]
## Joining, by = "TrackId"
##    PlaylistId TrackId
## 1           1    3391
## 2           1    3392
## 3           1    3396
## 4           1    3400
## 5           1    3401
## 6           1    3478
## 7           1    3378
## 8           1    3382
## 9           1    3383
## 10          1    3387
## 11          1    3365
## 12          1    3369
## 13          1    3373
## 14          1    3374
## 15          1      99
anti_join(playlist_track,invoice_items)[1:15,]
## Joining, by = "TrackId"
##    PlaylistId TrackId
## 1           1    3402
## 2           1    3389
## 3           1    3390
## 4           1    3393
## 5           1    3394
## 6           1    3395
## 7           1    3397
## 8           1    3398
## 9           1    3399
## 10          1    3336
## 11          1    3375
## 12          1    3376
## 13          1    3377
## 14          1    3379
## 15          1    3380

Terlihat untuk fungsi inner_join() akan menghasilkan semua baris pada table playlist_track yang nilai yang sama dengan table invoice_items, dan semua kolom dari playlist_track dan invoice_items. left_join() menghasilkan semua baris pada table playlist_track, dan semua kolom pada playlist_track dan invoice_items, dimana untuk baris pada playlist_track yang tidak memiliki kesamaan dengan invoice_items diisi dengan nilai NA pada kolom yang baru. right_join() menghasilkan semua baris pada table invoice_items, dan semua kolom pada playlist_track dan invoice_items, dimana untuk baris pada invoice_items yang tidak memiliki kesamaan dengan playlist_track akan diisi dengan nilai NA pada kolom yang baru.Dalam hal ini karena semuanya memiliki kesamaan maka tidak ada yang NA. full_join() menghasilkan semua baris dan kolom dari playlist_track dan invoice_items Jika ada nilai yang tidak sama (match) antara playlist_track dan invoice_items, maka akan bernilai NA. semi_join() menghasilkan semua baris pada table playlist_track yang memiliki kesamaan nilai dengan table invoice_items, dan semua kolom dari playlist_track. Ini mirip dengan inner_join(), bedanya inner_join() mengembalikan semua kolom dari playlist_track dan invoice_items anti_join() menghasilkan semua baris dari playlist_track yang TIDAK memiliki kesamaan dengan invoice_items, dan semua kolom yang berasal dari playlist_track.

Contoh lainnya misalkan akan digabungkan tabel invoice dan invoice_items. Output dan sintaks hasil penggabungan dapat dilihat di bawah ini

inner=invoices %>% inner_join(invoice_items)
## Joining, by = "InvoiceId"
inner[1:15,]
##    InvoiceId CustomerId         InvoiceDate          BillingAddress BillingCity
## 1          1          2 2009-01-01 00:00:00 Theodor-Heuss-Straße 34   Stuttgart
## 2          1          2 2009-01-01 00:00:00 Theodor-Heuss-Straße 34   Stuttgart
## 3          2          4 2009-01-02 00:00:00        Ullevålsveien 14        Oslo
## 4          2          4 2009-01-02 00:00:00        Ullevålsveien 14        Oslo
## 5          2          4 2009-01-02 00:00:00        Ullevålsveien 14        Oslo
## 6          2          4 2009-01-02 00:00:00        Ullevålsveien 14        Oslo
## 7          3          8 2009-01-03 00:00:00         Grétrystraat 63    Brussels
## 8          3          8 2009-01-03 00:00:00         Grétrystraat 63    Brussels
## 9          3          8 2009-01-03 00:00:00         Grétrystraat 63    Brussels
## 10         3          8 2009-01-03 00:00:00         Grétrystraat 63    Brussels
## 11         3          8 2009-01-03 00:00:00         Grétrystraat 63    Brussels
## 12         3          8 2009-01-03 00:00:00         Grétrystraat 63    Brussels
## 13         4         14 2009-01-06 00:00:00          8210 111 ST NW    Edmonton
## 14         4         14 2009-01-06 00:00:00          8210 111 ST NW    Edmonton
## 15         4         14 2009-01-06 00:00:00          8210 111 ST NW    Edmonton
##    BillingState BillingCountry BillingPostalCode Total InvoiceLineId TrackId
## 1          <NA>        Germany             70174  1.98             1       2
## 2          <NA>        Germany             70174  1.98             2       4
## 3          <NA>         Norway              0171  3.96             3       6
## 4          <NA>         Norway              0171  3.96             4       8
## 5          <NA>         Norway              0171  3.96             5      10
## 6          <NA>         Norway              0171  3.96             6      12
## 7          <NA>        Belgium              1000  5.94             7      16
## 8          <NA>        Belgium              1000  5.94             8      20
## 9          <NA>        Belgium              1000  5.94             9      24
## 10         <NA>        Belgium              1000  5.94            10      28
## 11         <NA>        Belgium              1000  5.94            11      32
## 12         <NA>        Belgium              1000  5.94            12      36
## 13           AB         Canada           T6G 2C7  8.91            13      42
## 14           AB         Canada           T6G 2C7  8.91            14      48
## 15           AB         Canada           T6G 2C7  8.91            15      54
##    UnitPrice Quantity
## 1       0.99        1
## 2       0.99        1
## 3       0.99        1
## 4       0.99        1
## 5       0.99        1
## 6       0.99        1
## 7       0.99        1
## 8       0.99        1
## 9       0.99        1
## 10      0.99        1
## 11      0.99        1
## 12      0.99        1
## 13      0.99        1
## 14      0.99        1
## 15      0.99        1
left_join(invoices,invoice_items)[1:15,]
## Joining, by = "InvoiceId"
##    InvoiceId CustomerId         InvoiceDate          BillingAddress BillingCity
## 1          1          2 2009-01-01 00:00:00 Theodor-Heuss-Straße 34   Stuttgart
## 2          1          2 2009-01-01 00:00:00 Theodor-Heuss-Straße 34   Stuttgart
## 3          2          4 2009-01-02 00:00:00        Ullevålsveien 14        Oslo
## 4          2          4 2009-01-02 00:00:00        Ullevålsveien 14        Oslo
## 5          2          4 2009-01-02 00:00:00        Ullevålsveien 14        Oslo
## 6          2          4 2009-01-02 00:00:00        Ullevålsveien 14        Oslo
## 7          3          8 2009-01-03 00:00:00         Grétrystraat 63    Brussels
## 8          3          8 2009-01-03 00:00:00         Grétrystraat 63    Brussels
## 9          3          8 2009-01-03 00:00:00         Grétrystraat 63    Brussels
## 10         3          8 2009-01-03 00:00:00         Grétrystraat 63    Brussels
## 11         3          8 2009-01-03 00:00:00         Grétrystraat 63    Brussels
## 12         3          8 2009-01-03 00:00:00         Grétrystraat 63    Brussels
## 13         4         14 2009-01-06 00:00:00          8210 111 ST NW    Edmonton
## 14         4         14 2009-01-06 00:00:00          8210 111 ST NW    Edmonton
## 15         4         14 2009-01-06 00:00:00          8210 111 ST NW    Edmonton
##    BillingState BillingCountry BillingPostalCode Total InvoiceLineId TrackId
## 1          <NA>        Germany             70174  1.98             1       2
## 2          <NA>        Germany             70174  1.98             2       4
## 3          <NA>         Norway              0171  3.96             3       6
## 4          <NA>         Norway              0171  3.96             4       8
## 5          <NA>         Norway              0171  3.96             5      10
## 6          <NA>         Norway              0171  3.96             6      12
## 7          <NA>        Belgium              1000  5.94             7      16
## 8          <NA>        Belgium              1000  5.94             8      20
## 9          <NA>        Belgium              1000  5.94             9      24
## 10         <NA>        Belgium              1000  5.94            10      28
## 11         <NA>        Belgium              1000  5.94            11      32
## 12         <NA>        Belgium              1000  5.94            12      36
## 13           AB         Canada           T6G 2C7  8.91            13      42
## 14           AB         Canada           T6G 2C7  8.91            14      48
## 15           AB         Canada           T6G 2C7  8.91            15      54
##    UnitPrice Quantity
## 1       0.99        1
## 2       0.99        1
## 3       0.99        1
## 4       0.99        1
## 5       0.99        1
## 6       0.99        1
## 7       0.99        1
## 8       0.99        1
## 9       0.99        1
## 10      0.99        1
## 11      0.99        1
## 12      0.99        1
## 13      0.99        1
## 14      0.99        1
## 15      0.99        1
right_join(invoices,invoice_items)[1:15,]
## Joining, by = "InvoiceId"
##    InvoiceId CustomerId         InvoiceDate          BillingAddress BillingCity
## 1          1          2 2009-01-01 00:00:00 Theodor-Heuss-Straße 34   Stuttgart
## 2          1          2 2009-01-01 00:00:00 Theodor-Heuss-Straße 34   Stuttgart
## 3          2          4 2009-01-02 00:00:00        Ullevålsveien 14        Oslo
## 4          2          4 2009-01-02 00:00:00        Ullevålsveien 14        Oslo
## 5          2          4 2009-01-02 00:00:00        Ullevålsveien 14        Oslo
## 6          2          4 2009-01-02 00:00:00        Ullevålsveien 14        Oslo
## 7          3          8 2009-01-03 00:00:00         Grétrystraat 63    Brussels
## 8          3          8 2009-01-03 00:00:00         Grétrystraat 63    Brussels
## 9          3          8 2009-01-03 00:00:00         Grétrystraat 63    Brussels
## 10         3          8 2009-01-03 00:00:00         Grétrystraat 63    Brussels
## 11         3          8 2009-01-03 00:00:00         Grétrystraat 63    Brussels
## 12         3          8 2009-01-03 00:00:00         Grétrystraat 63    Brussels
## 13         4         14 2009-01-06 00:00:00          8210 111 ST NW    Edmonton
## 14         4         14 2009-01-06 00:00:00          8210 111 ST NW    Edmonton
## 15         4         14 2009-01-06 00:00:00          8210 111 ST NW    Edmonton
##    BillingState BillingCountry BillingPostalCode Total InvoiceLineId TrackId
## 1          <NA>        Germany             70174  1.98             1       2
## 2          <NA>        Germany             70174  1.98             2       4
## 3          <NA>         Norway              0171  3.96             3       6
## 4          <NA>         Norway              0171  3.96             4       8
## 5          <NA>         Norway              0171  3.96             5      10
## 6          <NA>         Norway              0171  3.96             6      12
## 7          <NA>        Belgium              1000  5.94             7      16
## 8          <NA>        Belgium              1000  5.94             8      20
## 9          <NA>        Belgium              1000  5.94             9      24
## 10         <NA>        Belgium              1000  5.94            10      28
## 11         <NA>        Belgium              1000  5.94            11      32
## 12         <NA>        Belgium              1000  5.94            12      36
## 13           AB         Canada           T6G 2C7  8.91            13      42
## 14           AB         Canada           T6G 2C7  8.91            14      48
## 15           AB         Canada           T6G 2C7  8.91            15      54
##    UnitPrice Quantity
## 1       0.99        1
## 2       0.99        1
## 3       0.99        1
## 4       0.99        1
## 5       0.99        1
## 6       0.99        1
## 7       0.99        1
## 8       0.99        1
## 9       0.99        1
## 10      0.99        1
## 11      0.99        1
## 12      0.99        1
## 13      0.99        1
## 14      0.99        1
## 15      0.99        1
full_join(invoices,invoice_items)[1:15,]
## Joining, by = "InvoiceId"
##    InvoiceId CustomerId         InvoiceDate          BillingAddress BillingCity
## 1          1          2 2009-01-01 00:00:00 Theodor-Heuss-Straße 34   Stuttgart
## 2          1          2 2009-01-01 00:00:00 Theodor-Heuss-Straße 34   Stuttgart
## 3          2          4 2009-01-02 00:00:00        Ullevålsveien 14        Oslo
## 4          2          4 2009-01-02 00:00:00        Ullevålsveien 14        Oslo
## 5          2          4 2009-01-02 00:00:00        Ullevålsveien 14        Oslo
## 6          2          4 2009-01-02 00:00:00        Ullevålsveien 14        Oslo
## 7          3          8 2009-01-03 00:00:00         Grétrystraat 63    Brussels
## 8          3          8 2009-01-03 00:00:00         Grétrystraat 63    Brussels
## 9          3          8 2009-01-03 00:00:00         Grétrystraat 63    Brussels
## 10         3          8 2009-01-03 00:00:00         Grétrystraat 63    Brussels
## 11         3          8 2009-01-03 00:00:00         Grétrystraat 63    Brussels
## 12         3          8 2009-01-03 00:00:00         Grétrystraat 63    Brussels
## 13         4         14 2009-01-06 00:00:00          8210 111 ST NW    Edmonton
## 14         4         14 2009-01-06 00:00:00          8210 111 ST NW    Edmonton
## 15         4         14 2009-01-06 00:00:00          8210 111 ST NW    Edmonton
##    BillingState BillingCountry BillingPostalCode Total InvoiceLineId TrackId
## 1          <NA>        Germany             70174  1.98             1       2
## 2          <NA>        Germany             70174  1.98             2       4
## 3          <NA>         Norway              0171  3.96             3       6
## 4          <NA>         Norway              0171  3.96             4       8
## 5          <NA>         Norway              0171  3.96             5      10
## 6          <NA>         Norway              0171  3.96             6      12
## 7          <NA>        Belgium              1000  5.94             7      16
## 8          <NA>        Belgium              1000  5.94             8      20
## 9          <NA>        Belgium              1000  5.94             9      24
## 10         <NA>        Belgium              1000  5.94            10      28
## 11         <NA>        Belgium              1000  5.94            11      32
## 12         <NA>        Belgium              1000  5.94            12      36
## 13           AB         Canada           T6G 2C7  8.91            13      42
## 14           AB         Canada           T6G 2C7  8.91            14      48
## 15           AB         Canada           T6G 2C7  8.91            15      54
##    UnitPrice Quantity
## 1       0.99        1
## 2       0.99        1
## 3       0.99        1
## 4       0.99        1
## 5       0.99        1
## 6       0.99        1
## 7       0.99        1
## 8       0.99        1
## 9       0.99        1
## 10      0.99        1
## 11      0.99        1
## 12      0.99        1
## 13      0.99        1
## 14      0.99        1
## 15      0.99        1
semi_join(invoices,invoice_items)[1:15,]
## Joining, by = "InvoiceId"
##    InvoiceId CustomerId         InvoiceDate            BillingAddress
## 1          1          2 2009-01-01 00:00:00   Theodor-Heuss-Straße 34
## 2          2          4 2009-01-02 00:00:00          Ullevålsveien 14
## 3          3          8 2009-01-03 00:00:00           Grétrystraat 63
## 4          4         14 2009-01-06 00:00:00            8210 111 ST NW
## 5          5         23 2009-01-11 00:00:00           69 Salem Street
## 6          6         37 2009-01-19 00:00:00          Berger Straße 10
## 7          7         38 2009-02-01 00:00:00       Barbarossastraße 19
## 8          8         40 2009-02-01 00:00:00            8, Rue Hanovre
## 9          9         42 2009-02-02 00:00:00    9, Place Louis Barthou
## 10        10         46 2009-02-03 00:00:00          3 Chatham Street
## 11        11         52 2009-02-06 00:00:00         202 Hoxton Street
## 12        12          2 2009-02-11 00:00:00   Theodor-Heuss-Straße 34
## 13        13         16 2009-02-19 00:00:00 1600 Amphitheatre Parkway
## 14        14         17 2009-03-04 00:00:00           1 Microsoft Way
## 15        15         19 2009-03-04 00:00:00           1 Infinite Loop
##      BillingCity BillingState BillingCountry BillingPostalCode Total
## 1      Stuttgart         <NA>        Germany             70174  1.98
## 2           Oslo         <NA>         Norway              0171  3.96
## 3       Brussels         <NA>        Belgium              1000  5.94
## 4       Edmonton           AB         Canada           T6G 2C7  8.91
## 5         Boston           MA            USA              2113 13.86
## 6      Frankfurt         <NA>        Germany             60316  0.99
## 7         Berlin         <NA>        Germany             10779  1.98
## 8          Paris         <NA>         France             75002  1.98
## 9       Bordeaux         <NA>         France             33000  3.96
## 10        Dublin       Dublin        Ireland              <NA>  5.94
## 11        London         <NA> United Kingdom            N1 5LH  8.91
## 12     Stuttgart         <NA>        Germany             70174 13.86
## 13 Mountain View           CA            USA        94043-1351  0.99
## 14       Redmond           WA            USA        98052-8300  1.98
## 15     Cupertino           CA            USA             95014  1.98
anti_join(invoices,invoice_items)
## Joining, by = "InvoiceId"
## [1] InvoiceId         CustomerId        InvoiceDate       BillingAddress   
## [5] BillingCity       BillingState      BillingCountry    BillingPostalCode
## [9] Total            
## <0 rows> (or 0-length row.names)

Membuat peta dari daerah Kecamatan Ciputat dan Kota Tangerang Selatan

library(sf)
## Linking to GEOS 3.8.1, GDAL 3.1.1, PROJ 6.3.1
library(ggplot2)
library(tigris)
## To enable 
## caching of data, set `options(tigris_use_cache = TRUE)` in your R script or .Rprofile.
library(dplyr)
Admin3<-"Downloads/Admin3Kecamatan"
glimpse(Admin3) 
##  chr "Downloads/Admin3Kecamatan"
Admin3<-st_read(Admin3)
## Reading layer `idn_admbnda_adm3_bps_20200401' from data source `/Users/azzahraamonra/Downloads/Admin3Kecamatan' 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
## geographic CRS: WGS 84
glimpse(Admin3)
## Rows: 7,069
## Columns: 17
## $ Shape_Leng <dbl> 0.2798656, 0.7514001, 0.6900061, 0.6483629, 0.2437073, 1.3…
## $ Shape_Area <dbl> 0.003107633, 0.016925540, 0.024636382, 0.010761277, 0.0011…
## $ ADM3_EN    <chr> "2 X 11 Enam Lingkung", "2 X 11 Kayu Tanam", "Abab", "Aban…
## $ ADM3_PCODE <chr> "ID1306050", "ID1306052", "ID1612030", "ID5107050", "ID747…
## $ ADM3_REF   <chr> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA…
## $ ADM3ALT1EN <chr> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA…
## $ ADM3ALT2EN <chr> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA…
## $ ADM2_EN    <chr> "Padang Pariaman", "Padang Pariaman", "Penukal Abab Lemata…
## $ ADM2_PCODE <chr> "ID1306", "ID1306", "ID1612", "ID5107", "ID7471", "ID9432"…
## $ ADM1_EN    <chr> "Sumatera Barat", "Sumatera Barat", "Sumatera Selatan", "B…
## $ ADM1_PCODE <chr> "ID13", "ID13", "ID16", "ID51", "ID74", "ID94", "ID94", "I…
## $ ADM0_EN    <chr> "Indonesia", "Indonesia", "Indonesia", "Indonesia", "Indon…
## $ ADM0_PCODE <chr> "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-2…
## $ validOn    <date> 2020-04-01, 2020-04-01, 2020-04-01, 2020-04-01, 2020-04-0…
## $ validTo    <date> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, N…
## $ geometry   <MULTIPOLYGON [°]> MULTIPOLYGON (((100.2811 -0..., MULTIPOLYGON …

Pertama-tama, jangan lupa untuk memanggil package yang dibutuhkan seperti sintaks di atas. Setelah itu, unduh file kecamatan dan akses file yang telah diunduh menggunakan sintaks di atas.

CiputatTangsel <- read_delim("CiputatTangsel.csv", 
                             ";", escape_double = FALSE, trim_ws = TRUE)
## Parsed with column specification:
## cols(
##   Shape_Leng = col_character(),
##   Shape_Area = col_character(),
##   ADM3_EN = col_character(),
##   ADM3_PCODE = col_character(),
##   Data = col_double()
## )

Memasukan data melalui File CSV menggunakan sintaks di atas. Data tersebut merupakan file dbf yang telah di ubah menjadi CSV dan berisi longitude latitude kecamatan-kecamatan yang berada di Kota Tangerang Selatan. Pada hal ini, akan ditunjukan peta kecamatan Ciputat, Kota Tangerang Selatan, sehingga pada kolom “Data” Kecamatan Ciputat diisi oleh angka acak. Disini diisikan angka 910 sedangkan untuk data lainnya dibiarkan kosong.

merged_CiputatTangsel <- geo_join(spatial_data=Admin3, 
                                  data_frame=CiputatTangsel, by_sp="ADM3_PCODE", 
                                  by_df="ADM3_PCODE", how = "inner")
mycol <- c("red","green")

Selanjutnya gabungkan Spatial Data (Admin3 hasil import file SHP) dan Data Frame (CiputatTangsel hasil Import File CSV) dan definisikan cara joinnya yaitu “inner” dan tuliskan primary key, disini primary keynya adalah “ADM3_PCODE”. Setelah itu, definisikan warna yang akan ditampilkan, disini akan digunakan warna kombinasi merah dan hijau.

pDATA<-ggplot()+
  geom_sf(data=merged_CiputatTangsel,aes(fill=Data))+
  scale_fill_gradientn(colours=mycol)+
  labs(title="Ciputat dan Tangerang Selatan")
pDATA

Tampilkan peta tersebut menggunakan sintaks di atas. Wilayah yang berwarna merupakan wilayah Kecamatan Ciputat di Kota Tangerang Selatan