Praktikum Sains (Data Database dan Data Spasial)

Email             :
RPubs            : https://rpubs.com/Mochamamad_Ridwan/
Department  : Department of Statistics
Address         : Kampus IPB Darmaga
                         Jl. Meranti Wing 22 Level 4,Bogor 16680, Jawa Barat, Indonesia.


Package yang digunakan.

library(knitr)
## Warning: package 'knitr' was built under R version 4.0.4
library(tidyverse)
## Warning: package 'tidyverse' was built under R version 4.0.4
## -- Attaching packages --------------------------------------- tidyverse 1.3.0 --
## v ggplot2 3.3.3     v purrr   0.3.4
## v tibble  3.0.5     v dplyr   1.0.4
## v tidyr   1.1.3     v stringr 1.4.0
## v readr   1.4.0     v forcats 0.5.1
## Warning: package 'ggplot2' was built under R version 4.0.4
## Warning: package 'forcats' was built under R version 4.0.4
## -- Conflicts ------------------------------------------ tidyverse_conflicts() --
## x dplyr::filter() masks stats::filter()
## x dplyr::lag()    masks stats::lag()
library(RSQLite)
library(DBI)
library(sf)
## Linking to GEOS 3.8.0, GDAL 3.0.4, PROJ 6.3.1
library(ggplot2)
library(tigris)
## Warning: package 'tigris' was built under R version 4.0.4
## To enable 
## caching of data, set `options(tigris_use_cache = TRUE)` in your R script or .Rprofile.
library(sp)
## Warning: package 'sp' was built under R version 4.0.4
library(dplyr)
library(DT)
library(kableExtra)
## 
## Attaching package: 'kableExtra'
## The following object is masked from 'package:dplyr':
## 
##     group_rows

Koneksi Database

Database yang digunakan adalah chinook.db

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

Daftar Tabel yang terdapat pada database chinook adalah:

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"

Tables

Skema Database chinook.db

Tabel-tabel yang akan digunakan pada praktikum terdiri dari:

albums, artists , customers , invoice_items , invoices , playlists , playlist_track , tracks

albums<-dplyr::tbl(chinook,"albums")
artists<-dplyr::tbl(chinook,"artists")
customers<-dplyr::tbl(chinook,"customers")
invoice_items<-dplyr::tbl(chinook,"invoice_items")
invoices<-dplyr::tbl(chinook,"invoices")
playlists<-dplyr::tbl(chinook,"playlists")
playlist_track<-dplyr::tbl(chinook,"playlist_track")
tracks<-dplyr::tbl(chinook,"tracks")
kbl(head(albums), caption = "Head(Albums)") %>%  kable_styling(font_size=14)
Head(Albums)
AlbumId Title ArtistId
1 For Those About To Rock We Salute You 1
2 Balls to the Wall 2
3 Restless and Wild 2
4 Let There Be Rock 1
5 Big Ones 3
6 Jagged Little Pill 4
kbl(head(artists), caption = "Head(artists)") %>%  kable_styling(font_size=14)
Head(artists)
ArtistId Name
1 AC/DC
2 Accept
3 Aerosmith
4 Alanis Morissette
5 Alice In Chains
6 Antônio Carlos Jobim
kbl(head(customers), caption = "Head(customers)") %>%  kable_styling(font_size=14)
Head(customers)
CustomerId FirstName LastName Company Address City State Country PostalCode Phone Fax Email SupportRepId
1 Luís Gonçalves Embraer - Empresa Brasileira de Aeronáutica S.A. Av. Brigadeiro Faria Lima, 2170 São José dos Campos SP Brazil 12227-000 +55 (12) 3923-5555 +55 (12) 3923-5566 3
2 Leonie Köhler NA Theodor-Heuss-Straße 34 Stuttgart NA Germany 70174 +49 0711 2842222 NA 5
3 François Tremblay NA 1498 rue Bélanger Montréal QC Canada H2G 1A7 +1 (514) 721-4711 NA 3
4 Bjørn Hansen NA Ullevålsveien 14 Oslo NA Norway 0171 +47 22 44 22 22 NA 4
5 František Wichterlová JetBrains s.r.o. Klanova 9/506 Prague NA Czech Republic 14700 +420 2 4172 5555 +420 2 4172 5555 4
6 Helena Holý NA Rilská 3174/6 Prague NA Czech Republic 14300 +420 2 4177 0449 NA 5
kbl(head(invoice_items), caption = "Head(invoice_items)") %>%  kable_styling(font_size=14)
Head(invoice_items)
InvoiceLineId InvoiceId TrackId UnitPrice Quantity
1 1 2 0.99 1
2 1 4 0.99 1
3 2 6 0.99 1
4 2 8 0.99 1
5 2 10 0.99 1
6 2 12 0.99 1
kbl(head(invoices), caption = "Head(invoices)") %>%  kable_styling(font_size=14)
Head(invoices)
InvoiceId CustomerId InvoiceDate BillingAddress BillingCity BillingState BillingCountry BillingPostalCode Total
1 2 2009-01-01 00:00:00 Theodor-Heuss-Straße 34 Stuttgart NA Germany 70174 1.98
2 4 2009-01-02 00:00:00 Ullevålsveien 14 Oslo NA Norway 0171 3.96
3 8 2009-01-03 00:00:00 Grétrystraat 63 Brussels NA Belgium 1000 5.94
4 14 2009-01-06 00:00:00 8210 111 ST NW Edmonton AB Canada T6G 2C7 8.91
5 23 2009-01-11 00:00:00 69 Salem Street Boston MA USA 2113 13.86
6 37 2009-01-19 00:00:00 Berger Straße 10 Frankfurt NA Germany 60316 0.99
kbl(head(playlists), caption = "Head(playlists)") %>%  kable_styling(font_size=14)
Head(playlists)
PlaylistId Name
1 Music
2 Movies
3 TV Shows
4 Audiobooks
5 90’s Music
6 Audiobooks
kbl(head(playlist_track), caption = "Head(playlist_track)") %>%  kable_styling(font_size=14)
Head(playlist_track)
PlaylistId TrackId
1 3402
1 3389
1 3390
1 3391
1 3392
1 3393
kbl(head(tracks), caption = "Head(tracks)") %>%  kable_styling(font_size=14)
Head(tracks)
TrackId Name AlbumId MediaTypeId GenreId Composer Milliseconds Bytes UnitPrice
1 For Those About To Rock (We Salute You) 1 1 1 Angus Young, Malcolm Young, Brian Johnson 343719 11170334 0.99
2 Balls to the Wall 2 2 1 NA 342562 5510424 0.99
3 Fast As a Shark 3 2 1 F. Baltes, S. Kaufman, U. Dirkscneider & W. Hoffman 230619 3990994 0.99
4 Restless and Wild 3 2 1 F. Baltes, R.A. Smith-Diesel, S. Kaufman, U. Dirkscneider & W. Hoffman 252051 4331779 0.99
5 Princess of the Dawn 3 2 1 Deaffy & R.A. Smith-Diesel 375418 6290521 0.99
6 Put The Finger On You 1 1 1 Angus Young, Malcolm Young, Brian Johnson 205662 6713451 0.99

Fungsi Join

inner_join

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

inner_join() yang dicoba adalah antara tabel invoices dan invoice_items

inner_join_t = inner_join(invoices,invoice_items)
## Joining, by = "InvoiceId"
inner_join_t
## # Source:   lazy query [?? x 13]
## # Database: sqlite 3.34.1 [C:\sqlite\db\chinook.db]
##    InvoiceId CustomerId InvoiceDate    BillingAddress   BillingCity BillingState
##        <int>      <int> <chr>          <chr>            <chr>       <chr>       
##  1         1          2 2009-01-01 00~ Theodor-Heuss-S~ Stuttgart   <NA>        
##  2         1          2 2009-01-01 00~ Theodor-Heuss-S~ Stuttgart   <NA>        
##  3         2          4 2009-01-02 00~ Ullevålsveien 14 Oslo        <NA>        
##  4         2          4 2009-01-02 00~ Ullevålsveien 14 Oslo        <NA>        
##  5         2          4 2009-01-02 00~ Ullevålsveien 14 Oslo        <NA>        
##  6         2          4 2009-01-02 00~ Ullevålsveien 14 Oslo        <NA>        
##  7         3          8 2009-01-03 00~ Grétrystraat 63  Brussels    <NA>        
##  8         3          8 2009-01-03 00~ Grétrystraat 63  Brussels    <NA>        
##  9         3          8 2009-01-03 00~ Grétrystraat 63  Brussels    <NA>        
## 10         3          8 2009-01-03 00~ Grétrystraat 63  Brussels    <NA>        
## # ... with more rows, and 7 more variables: BillingCountry <chr>,
## #   BillingPostalCode <chr>, Total <dbl>, InvoiceLineId <int>, TrackId <int>,
## #   UnitPrice <dbl>, Quantity <int>

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.

left_join() yang dicoba adalah antara tabel playlist_track dan playlists

left_join_t = left_join(playlist_track,playlists)
## Joining, by = "PlaylistId"
left_join_t
## # Source:   lazy query [?? x 3]
## # Database: sqlite 3.34.1 [C:\sqlite\db\chinook.db]
##    PlaylistId TrackId Name 
##         <int>   <int> <chr>
##  1          1    3402 Music
##  2          1    3389 Music
##  3          1    3390 Music
##  4          1    3391 Music
##  5          1    3392 Music
##  6          1    3393 Music
##  7          1    3394 Music
##  8          1    3395 Music
##  9          1    3396 Music
## 10          1    3397 Music
## # ... 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.

right_join() yang dicoba adalah antara tabel tracks dan playlist_track

right_join_t = right_join(tracks,playlist_track)
## Joining, by = "TrackId"
right_join_t
## # Source:   lazy query [?? x 10]
## # Database: sqlite 3.34.1 [C:\sqlite\db\chinook.db]
##    TrackId Name         AlbumId MediaTypeId GenreId Composer Milliseconds  Bytes
##      <int> <chr>          <int>       <int>   <int> <chr>           <int>  <int>
##  1    3402 "Band Membe~     271           3      23 <NA>           294294 6.11e7
##  2    3389 "Revelation~     271           2      23 <NA>           252376 4.11e6
##  3    3390 "One and th~     271           2      23 <NA>           217732 3.56e6
##  4    3391 "Sound of a~     271           2      23 <NA>           260154 4.23e6
##  5    3392 "Until We F~     271           2      23 <NA>           230758 3.77e6
##  6    3393 "Original F~     271           2      23 <NA>           218916 3.58e6
##  7    3394 "Broken Cit~     271           2      23 <NA>           228366 3.73e6
##  8    3395 "Somedays"       271           2      23 <NA>           213831 3.50e6
##  9    3396 "Shape of T~     271           2      23 <NA>           274597 4.47e6
## 10    3397 "Jewel of t~     271           2      23 <NA>           233242 3.81e6
## # ... with more rows, and 2 more variables: UnitPrice <dbl>, PlaylistId <int>

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.

full_join() yang dicoba adalah antara tabel artists dan albums

full_join_t = full_join(artists,albums)
## Joining, by = "ArtistId"
full_join_t
## # Source:   lazy query [?? x 4]
## # Database: sqlite 3.34.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.

semi_join() yang dicoba adalah antara tabel invoices dan customers

semi_join_t = semi_join(invoices,customers)
## Joining, by = "CustomerId"
semi_join_t
## # Source:   lazy query [?? x 9]
## # Database: sqlite 3.34.1 [C:\sqlite\db\chinook.db]
##    InvoiceId CustomerId InvoiceDate    BillingAddress   BillingCity BillingState
##        <int>      <int> <chr>          <chr>            <chr>       <chr>       
##  1         1          2 2009-01-01 00~ Theodor-Heuss-S~ Stuttgart   <NA>        
##  2         2          4 2009-01-02 00~ Ullevålsveien 14 Oslo        <NA>        
##  3         3          8 2009-01-03 00~ Grétrystraat 63  Brussels    <NA>        
##  4         4         14 2009-01-06 00~ 8210 111 ST NW   Edmonton    AB          
##  5         5         23 2009-01-11 00~ 69 Salem Street  Boston      MA          
##  6         6         37 2009-01-19 00~ Berger Straße 10 Frankfurt   <NA>        
##  7         7         38 2009-02-01 00~ Barbarossastraß~ Berlin      <NA>        
##  8         8         40 2009-02-01 00~ 8, Rue Hanovre   Paris       <NA>        
##  9         9         42 2009-02-02 00~ 9, Place Louis ~ Bordeaux    <NA>        
## 10        10         46 2009-02-03 00~ 3 Chatham Street Dublin      Dublin      
## # ... with more rows, and 3 more variables: BillingCountry <chr>,
## #   BillingPostalCode <chr>, Total <dbl>

anti_join

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

anti_join() yang dicoba adalah antara tabel artists dan albums

anti_join_t = anti_join(artists,albums)
## Joining, by = "ArtistId"
anti_join_t
## # Source:   lazy query [?? x 2]
## # Database: sqlite 3.34.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

Data Spasial

Yang ditampilkan di pratikum ini, kepadatan Penduduk per Kecamatan di Kabupaten Bekasi

Tahun 2020

-Peta

AdminKecamatan<-"D:/BAHAN KULIAH/SM 1/SAINS DATA/SHP FILE/idn_admbnda_adm3_bps_20200401.shp"
glimpse(AdminKecamatan)
##  chr "D:/BAHAN KULIAH/SM 1/SAINS DATA/SHP FILE/idn_admbnda_adm3_bps_20200401.shp"
AdminKecamatan<-st_read(AdminKecamatan)
## Reading layer `idn_admbnda_adm3_bps_20200401' from data source `D:\BAHAN KULIAH\SM 1\SAINS DATA\SHP FILE\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
## geographic CRS: WGS 84
glimpse(AdminKecamatan)
## 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    <chr> "2 X 11 Enam Lingkung", "2 X 11 Kayu Tanam", "Abab", "Abang~
## $ ADM3_PCODE <chr> "ID1306050", "ID1306052", "ID1612030", "ID5107050", "ID7471~
## $ 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 Lematan~
## $ ADM2_PCODE <chr> "ID1306", "ID1306", "ID1612", "ID5107", "ID7471", "ID9432",~
## $ ADM1_EN    <chr> "Sumatera Barat", "Sumatera Barat", "Sumatera Selatan", "Ba~
## $ ADM1_PCODE <chr> "ID13", "ID13", "ID16", "ID51", "ID74", "ID94", "ID94", "ID~
## $ ADM0_EN    <chr> "Indonesia", "Indonesia", "Indonesia", "Indonesia", "Indone~
## $ 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-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 (~

-Data

PendudukKabBekasi<-read.csv("D:/BAHAN KULIAH/SM 1/SAINS DATA/SHP FILE/Data Penduduk Kab. Bekasi.csv")
PendudukKabBekasi
##    Kode.Kecamatan   Nama.Kecamatan Jumlah.Penduduk Kepadatan
## 1       ID3216010             Setu          144624      2327
## 2       ID3216021      Serang Baru          173585      2721
## 3       ID3216022   Cikarang Pusat          100714      2116
## 4       ID3216023 Cikarang Selatan          278476      5382
## 5       ID3216030        Cibarusah           92168      1829
## 6       ID3216031      Bojongmangu           27363       456
## 7       ID3216041   Cikarang Timur          107854      2102
## 8       ID3216050   Kedungwaringin           63660      2019
## 9       ID3216061   Cikarang Utara          278421      6430
## 10      ID3216062    Karangbahagia           97369      2112
## 11      ID3216070         Cibitung          281824      6221
## 12      ID3216071   Cikarang Barat          278237      5182
## 13      ID3216081   Tambun Selatan          505012     11717
## 14      ID3216082     Tambun Utara          215879      6272
## 15      ID3216090          Babelan          297645      4680
## 16      ID3216100       Tarumajaya          158437      2900
## 17      ID3216110        Tambelang           38461      1015
## 18      ID3216111        Sukawangi           48297       719
## 19      ID3216120         Sukatani           74944      1997
## 20      ID3216121        Sukakarya           46817      1104
## 21      ID3216130        Pebayuran          102400      1063
## 22      ID3216140     Cabangbungin           49018       986
## 23      ID3216150    Muara Gembong          378818       277
kbl(head(PendudukKabBekasi), caption = "Head(PendudukKabBekasi)") %>%  kable_styling(font_size = 14)
Head(PendudukKabBekasi)
Kode.Kecamatan Nama.Kecamatan Jumlah.Penduduk Kepadatan
ID3216010 Setu 144624 2327
ID3216021 Serang Baru 173585 2721
ID3216022 Cikarang Pusat 100714 2116
ID3216023 Cikarang Selatan 278476 5382
ID3216030 Cibarusah 92168 1829
ID3216031 Bojongmangu 27363 456

-Merger Data

Merge shapefiles dan dataset

merged_KabBekasi <- geo_join(spatial_data=AdminKecamatan, 
                             data_frame=PendudukKabBekasi, by_sp="ADM3_PCODE", 
                             by_df="Kode.Kecamatan", how = "inner")
merged_KabBekasi
## Simple feature collection with 23 features and 19 fields
## geometry type:  MULTIPOLYGON
## dimension:      XY
## bbox:           xmin: 106.9686 ymin: -6.482019 xmax: 107.2966 ymax: -5.918148
## geographic CRS: WGS 84
## First 10 features:
##    Shape_Leng  Shape_Area          ADM3_EN ADM3_PCODE ADM3_REF ADM3ALT1EN
## 1   0.5871964 0.005388774          Babelan  ID3216090     <NA>       <NA>
## 2   0.5015490 0.004320796      Bojongmangu  ID3216031     <NA>       <NA>
## 3   0.4066188 0.004046014     Cabangbungin  ID3216140     <NA>       <NA>
## 4   0.3513376 0.003286197        Cibarusah  ID3216030     <NA>       <NA>
## 5   0.4748041 0.003603693         Cibitung  ID3216070     <NA>       <NA>
## 6   0.4915341 0.004413896   Cikarang Barat  ID3216071     <NA>       <NA>
## 7   0.5120708 0.004369193   Cikarang Pusat  ID3216022     <NA>       <NA>
## 8   0.4528430 0.004397012 Cikarang Selatan  ID3216023     <NA>       <NA>
## 9   0.4833011 0.004313361   Cikarang Timur  ID3216041     <NA>       <NA>
## 10  0.3364092 0.003265586   Cikarang Utara  ID3216061     <NA>       <NA>
##    ADM3ALT2EN ADM2_EN ADM2_PCODE    ADM1_EN ADM1_PCODE   ADM0_EN ADM0_PCODE
## 1        <NA>  Bekasi     ID3216 Jawa Barat       ID32 Indonesia         ID
## 2        <NA>  Bekasi     ID3216 Jawa Barat       ID32 Indonesia         ID
## 3        <NA>  Bekasi     ID3216 Jawa Barat       ID32 Indonesia         ID
## 4        <NA>  Bekasi     ID3216 Jawa Barat       ID32 Indonesia         ID
## 5        <NA>  Bekasi     ID3216 Jawa Barat       ID32 Indonesia         ID
## 6        <NA>  Bekasi     ID3216 Jawa Barat       ID32 Indonesia         ID
## 7        <NA>  Bekasi     ID3216 Jawa Barat       ID32 Indonesia         ID
## 8        <NA>  Bekasi     ID3216 Jawa Barat       ID32 Indonesia         ID
## 9        <NA>  Bekasi     ID3216 Jawa Barat       ID32 Indonesia         ID
## 10       <NA>  Bekasi     ID3216 Jawa Barat       ID32 Indonesia         ID
##          date    validOn validTo   Nama.Kecamatan Jumlah.Penduduk Kepadatan
## 1  2019-12-20 2020-04-01    <NA>          Babelan          297645      4680
## 2  2019-12-20 2020-04-01    <NA>      Bojongmangu           27363       456
## 3  2019-12-20 2020-04-01    <NA>     Cabangbungin           49018       986
## 4  2019-12-20 2020-04-01    <NA>        Cibarusah           92168      1829
## 5  2019-12-20 2020-04-01    <NA>         Cibitung          281824      6221
## 6  2019-12-20 2020-04-01    <NA>   Cikarang Barat          278237      5182
## 7  2019-12-20 2020-04-01    <NA>   Cikarang Pusat          100714      2116
## 8  2019-12-20 2020-04-01    <NA> Cikarang Selatan          278476      5382
## 9  2019-12-20 2020-04-01    <NA>   Cikarang Timur          107854      2102
## 10 2019-12-20 2020-04-01    <NA>   Cikarang Utara          278421      6430
##                          geometry
## 1  MULTIPOLYGON (((107.0586 -6...
## 2  MULTIPOLYGON (((107.1884 -6...
## 3  MULTIPOLYGON (((107.1142 -6...
## 4  MULTIPOLYGON (((107.0972 -6...
## 5  MULTIPOLYGON (((107.092 -6....
## 6  MULTIPOLYGON (((107.1401 -6...
## 7  MULTIPOLYGON (((107.169 -6....
## 8  MULTIPOLYGON (((107.1477 -6...
## 9  MULTIPOLYGON (((107.2017 -6...
## 10 MULTIPOLYGON (((107.1982 -6...

-Data Dalam Peta

gradient <- c("#ffb3d9","#ff4da6","#e60073","#800040")
pDATA1<-ggplot()+geom_sf(data=merged_KabBekasi,aes(fill=Kepadatan))+ scale_color_gradientn(colours = gradient)+labs(title="Kepadatan Penduduk Kabupaten Bekasi Per Kecamatan 2020")
pDATA1