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)
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