database yang digunakan adalah database chinook.db.
Chinook <- DBI::dbConnect(RSQLite::SQLite(), "C:/sqlite/db/chinook.db")
class(Chinook)[1] "SQLiteConnection"
attr(,"package")
[1] "RSQLite"
digunakan fungsi dbListTables untuk melihat tabel yang ada didalam database.
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"
sehingga diketahui terdapat 13 tabel pada database chinook. Akan diakses salah satu tabel dalam database
tracks <- dplyr::tbl(Chinook, "tracks")
class(tracks)[1] "tbl_SQLiteConnection" "tbl_dbi" "tbl_sql"
[4] "tbl_lazy" "tbl"
tracks merupakan object dengan class tbl yang dapat diperlakukan serupa dengan data.frame. Berikut adalah isi dari object tracks.
tracks# Source: table<tracks> [?? x 9]
# Database: sqlite 3.36.0 [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>
mengakses tabel artists
artists <- dplyr::tbl(Chinook, "artists")
class(artists)[1] "tbl_SQLiteConnection" "tbl_dbi" "tbl_sql"
[4] "tbl_lazy" "tbl"
dplyr in Rinner_join()menghasilkan semua baris pada tabel x yang memiliki kesamaan nilai dengan table y, dan semua kolom dari x dan y.
inner_join(tracks, artists)# Source: lazy query [?? x 10]
# Database: sqlite 3.36.0 [C:\sqlite\db\chinook.db]
TrackId Name AlbumId MediaTypeId GenreId Composer Milliseconds Bytes
<int> <chr> <int> <int> <int> <chr> <int> <int>
1 149 Black Sabbath 16 1 3 <NA> 382066 1.24e7
2 169 Body Count 18 1 4 <NA> 317936 1.05e7
3 1222 Iron Maiden 95 1 3 Steve H~ 324623 5.20e6
4 1297 Iron Maiden 102 1 3 Harris 261955 6.29e6
5 1320 Iron Maiden 104 1 1 <NA> 494602 1.19e7
6 1366 Iron Maiden 109 1 1 Steve H~ 351869 1.41e7
7 2148 Iron Maiden 177 1 1 Steve H~ 235232 7.60e6
8 3278 Black Sabbath 256 2 1 <NA> 364180 5.86e6
# ... with 2 more variables: UnitPrice <dbl>, ArtistId <int>
diperoleh tabel tracks yang memuat kesamaan nilai dengan tabel artists dengan semua kolom dari masing-masing tabel.
left_join()Menghasilkan semua baris dalam tabel x, semua kolom pada x dan y. Untuk baris pada x yang tidak memiliki kesamaan dengan y diisi dengan nilai NA pada kolom yang baru.
invoices <- dplyr::tbl(Chinook, "invoices")
customers <- dplyr::tbl(Chinook, "customers")
left_join(invoices, customers)# Source: lazy query [?? x 21]
# Database: sqlite 3.36.0 [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 15 more variables: BillingCountry <chr>,
# BillingPostalCode <chr>, Total <dbl>, FirstName <chr>, LastName <chr>,
# Company <chr>, Address <chr>, City <chr>, State <chr>, Country <chr>,
# PostalCode <chr>, Phone <chr>, Fax <chr>, Email <chr>, SupportRepId <int>
diperoleh semua baris pada tabel invoices dengan semua kolom tabel invoices dan customers, baris pada invoices yang tidak memiliki kesamaan dengan customers diisi dengan nilai NA pada kolom yang baru.
right_join()menghasilkan semua baris pada tabel y, dan semua kolom pada x dan y, namun baris pada y yang tidak memiliki kesamaan dengan x akan diisi dengan nilai NA pada kolom yang baru.
genres <- dplyr::tbl(Chinook, "genres")
right_join(tracks, genres)# Source: lazy query [?? x 9]
# Database: sqlite 3.36.0 [C:\sqlite\db\chinook.db]
TrackId Name AlbumId MediaTypeId GenreId Composer Milliseconds Bytes
<int> <chr> <int> <int> <int> <chr> <int> <int>
1 NA Rock NA NA 1 <NA> NA NA
2 NA Jazz NA NA 2 <NA> NA NA
3 NA Metal NA NA 3 <NA> NA NA
4 NA Alternative ~ NA NA 4 <NA> NA NA
5 NA Rock And Roll NA NA 5 <NA> NA NA
6 NA Blues NA NA 6 <NA> NA NA
7 NA Latin NA NA 7 <NA> NA NA
8 NA Reggae NA NA 8 <NA> NA NA
9 NA Pop NA NA 9 <NA> NA NA
10 NA Soundtrack NA NA 10 <NA> NA NA
# ... with more rows, and 1 more variable: UnitPrice <dbl>
diperoleh semua baris pada tabel genres dengan semua kolom tabel tracks dan genres, baris pada genres yang tidak memiliki kesamaan dengan tracks diisi dengan nilai NA pada kolom yang baru.
full_join()menghasilkan semua baris dan kolom dari x dan y. Jika terdapat nilai yang tidak sama (match) antara x dan y maka akan bernilai NA.
playlist_track <- dplyr::tbl(Chinook, "playlist_track")
full_join(tracks, playlist_track)# Source: lazy query [?? x 10]
# Database: sqlite 3.36.0 [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 1 For Thos~ 1 1 1 Angus Youn~ 343719 1.12e7
3 1 For Thos~ 1 1 1 Angus Youn~ 343719 1.12e7
4 2 Balls to~ 2 2 1 <NA> 342562 5.51e6
5 2 Balls to~ 2 2 1 <NA> 342562 5.51e6
6 2 Balls to~ 2 2 1 <NA> 342562 5.51e6
7 3 Fast As ~ 3 2 1 F. Baltes,~ 230619 3.99e6
8 3 Fast As ~ 3 2 1 F. Baltes,~ 230619 3.99e6
9 3 Fast As ~ 3 2 1 F. Baltes,~ 230619 3.99e6
10 3 Fast As ~ 3 2 1 F. Baltes,~ 230619 3.99e6
# ... with more rows, and 2 more variables: UnitPrice <dbl>, PlaylistId <int>
diperoleh seluruh baris dan kolom dari kedua tabel playlist_track dan tracks
semi_join()menghasilkan semua baris pada tabel x yang memiliki kesamaan nilai dengan tabel y, dan semua kolom dari x. serupa dengan inner_join(), perbedaannya inner_join() mengembalikan semua kolom dari x dan y.
semi_join(tracks, artists)# Source: lazy query [?? x 9]
# Database: sqlite 3.36.0 [C:\sqlite\db\chinook.db]
TrackId Name AlbumId MediaTypeId GenreId Composer Milliseconds Bytes
<int> <chr> <int> <int> <int> <chr> <int> <int>
1 149 Black Sabbath 16 1 3 <NA> 382066 1.24e7
2 169 Body Count 18 1 4 <NA> 317936 1.05e7
3 1222 Iron Maiden 95 1 3 Steve H~ 324623 5.20e6
4 1297 Iron Maiden 102 1 3 Harris 261955 6.29e6
5 1320 Iron Maiden 104 1 1 <NA> 494602 1.19e7
6 1366 Iron Maiden 109 1 1 Steve H~ 351869 1.41e7
7 2148 Iron Maiden 177 1 1 Steve H~ 235232 7.60e6
8 3278 Black Sabbath 256 2 1 <NA> 364180 5.86e6
# ... with 1 more variable: UnitPrice <dbl>
diperoleh gabungan tracks dan artists dan mengembalikan semua kolom dari tracks dan artists.
anti_join()menghasilkan semua baris dari x yang tidak memiliki kesamaan dengan y, dan semua kolom yang berasal dari x.
albums <- dplyr::tbl(Chinook, "albums")
anti_join(artists, albums)# Source: lazy query [?? x 2]
# Database: sqlite 3.36.0 [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
diperoleh baris dari tabel artists yang tidak memiliki kesamaan dengan tabel albums.
inner_join()inner_join(tracks, albums) %>%
inner_join(., artists)# Source: lazy query [?? x 11]
# Database: sqlite 3.36.0 [C:\sqlite\db\chinook.db]
TrackId Name AlbumId MediaTypeId GenreId Composer Milliseconds Bytes
<int> <chr> <int> <int> <int> <chr> <int> <int>
1 149 Black Sabbath 16 1 3 <NA> 382066 1.24e7
2 169 Body Count 18 1 4 <NA> 317936 1.05e7
3 1222 Iron Maiden 95 1 3 Steve H~ 324623 5.20e6
4 1297 Iron Maiden 102 1 3 Harris 261955 6.29e6
5 1320 Iron Maiden 104 1 1 <NA> 494602 1.19e7
6 1366 Iron Maiden 109 1 1 Steve H~ 351869 1.41e7
# ... with 3 more variables: UnitPrice <dbl>, Title <chr>, ArtistId <int>
diperoleh semua baris tabel tracks yang memiliki kesamaan nilai dengan tabel albums, dan semua kolom dari tracks dan album yang kemudian hasil inner_join() tersebut diaplikasikan ulang dengan tabel artists.
mengakses file SHP
Admin3Kecamatan <- "C:/Users/nafis/Documents/Pascasarjana Nafisa/Semester 1/file kuliah/Sains Data/week 5/Admin3Kecamatan/idn_admbnda_adm3_bps_20200401.shp"untuk mengetahui isi file SHP digunakan fungsi glimpse dari package dplyr
glimpse(Admin3Kecamatan) chr "C:/Users/nafis/Documents/Pascasarjana Nafisa/Semester 1/file kuliah/Sains Data/week 5/Admin3Kecamatan/idn_admbn"| __truncated__
akan dirubah melalui fungsi st_read dari package sf
Admin3 <- st_read(Admin3Kecamatan)Reading layer `idn_admbnda_adm3_bps_20200401' from data source
`C:\Users\nafis\Documents\Pascasarjana Nafisa\Semester 1\file kuliah\Sains Data\week 5\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
Bounding box: xmin: 95.01079 ymin: -11.00762 xmax: 141.0194 ymax: 6.07693
Geodetic CRS: WGS 84
akan dilihat kembali setelah dirubah
glimpse(Admin3)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 (~
File dbf disimpan dalam format csv melalui microsoft excel. File csv yang akan digunakan adalah sebagai berikut
Kotabekasi <- read.csv("/Users/nafis/Desktop/Bekasi.csv", header = TRUE, sep = ";")Merge Data dilakukan dengan membandingkan primary key antara Spatial Data (adminthree hasil import file SHP) dan Data Frame (Kotabekasi hasil Import File CSV) menggunakan fungsi geo_join() dari package tigris
merged_bekasi <- geo_join(spatial_data = Admin3, data_frame = Kotabekasi, by_sp = "ADM3_PCODE",
by_df = "ADM3_PCODE", how = "inner")mengatur warna untuk pewarnaan daerah
mycol1 <- c("lightblue1", "lightblue2", "lightblue3", "lightblue4")pDATA <- ggplot() + geom_sf(data = merged_bekasi, aes(fill = DATA)) + scale_fill_gradientn(colours = mycol1,
name = "Jumlah Penduduk") + labs(title = "Peta Kota dan Kabupaten Bekasi")
pDATAMengakses file melalui csv
Kotabekasi1 <- read.csv("/Users/nafis/Desktop/tes.csv", header = TRUE, sep = ";")merged_bekasicity <- geo_join(spatial_data = Admin3, data_frame = Kotabekasi1, by_sp = "ADM3_PCODE",
by_df = "ADM3_PCODE", how = "inner")mycol <- c("red", "green", "blue", "yellow")pDATA <- ggplot() + geom_sf(data = merged_bekasicity, aes(fill = DATA)) + scale_fill_gradientn(colours = mycol,
name = "Jumlah Penduduk") + labs(title = "Kota dan Kabupaten Bekasi serta Provinsi Jawa Barat")
pDATAMengakses file
Kotabekasi2 <- read.csv("/Users/nafis/Desktop/kecamatan.csv", header = TRUE, sep = ";")merged_bekasicity1 <- geo_join(spatial_data = Admin3, data_frame = Kotabekasi2, by_sp = "ADM3_PCODE",
by_df = "ADM3_PCODE", how = "inner")mycol2 <- c("indianred")pDATA2 <- ggplot() + geom_sf(data = merged_bekasicity1, aes(fill = DATA)) + scale_fill_gradientn(colours = mycol2,
name = "Jumlah Penduduk") + labs(title = "Kecamatan Bekasi Timur dalam Kota dan Kabupaten Bekasi")
pDATA2Perbedaan dari ketiga percobaan terdapat file csv yang digunakan, yaitu file Kotabekasi, Kotabekasi1, Kotabekasi2.
dim(Kotabekasi)[1] 35 8
dim(Kotabekasi1)[1] 630 7
dim(Kotabekasi2)[1] 35 7
head(Kotabekasi) Shape_Leng Shape_Area ADM3_EN ADM3_PCODE ADM2_EN ADM2_PCODE
1 0,58719641835 0,00538877381 Babelan ID3216090 Bekasi ID3216
2 0,50154897847 0,00432079619 Bojongmangu ID3216031 Bekasi ID3216
3 0,40661875817 0,00404601403 Cabangbungin ID3216140 Bekasi ID3216
4 0,35133764809 0,00328619657 Cibarusah ID3216030 Bekasi ID3216
5 0,47480409668 0,00360369315 Cibitung ID3216070 Bekasi ID3216
6 0,49153411236 0,00441389566 Cikarang Barat ID3216071 Bekasi ID3216
DATA X
1 297645 NA
2 27363 NA
3 49018 NA
4 92168 NA
5 281824 NA
6 278237 NA
head(Kotabekasi1) Shape_Leng Shape_Area ADM3_EN ADM3_PCODE ADM2_EN ADM2_PCODE
1 0,58719641835 0,00538877381 Babelan ID3216090 Bekasi ID3216
2 0,50154897847 0,00432079619 Bojongmangu ID3216031 Bekasi ID3216
3 0,40661875817 0,00404601403 Cabangbungin ID3216140 Bekasi ID3216
4 0,35133764809 0,00328619657 Cibarusah ID3216030 Bekasi ID3216
5 0,47480409668 0,00360369315 Cibitung ID3216070 Bekasi ID3216
6 0,49153411236 0,00441389566 Cikarang Barat ID3216071 Bekasi ID3216
DATA
1 297645
2 27363
3 49018
4 92168
5 281824
6 278237
head(Kotabekasi2) Shape_Leng Shape_Area ADM3_EN ADM3_PCODE ADM2_EN ADM2_PCODE DATA
1 0,587196418 0,005388774 Babelan ID3216090 Bekasi ID3216 NA
2 0,501548978 0,004320796 Bojongmangu ID3216031 Bekasi ID3216 NA
3 0,406618758 0,004046014 Cabangbungin ID3216140 Bekasi ID3216 NA
4 0,351337648 0,003286197 Cibarusah ID3216030 Bekasi ID3216 NA
5 0,474804097 0,003603693 Cibitung ID3216070 Bekasi ID3216 NA
6 0,491534112 0,004413896 Cikarang Barat ID3216071 Bekasi ID3216 NA
glimpseglimpse(Kotabekasi)Rows: 35
Columns: 8
$ Shape_Leng <chr> "0,58719641835", "0,50154897847", "0,40661875817", "0,35133~
$ Shape_Area <chr> "0,00538877381", "0,00432079619", "0,00404601403", "0,00328~
$ ADM3_EN <chr> "Babelan", "Bojongmangu", "Cabangbungin", "Cibarusah", "Cib~
$ ADM3_PCODE <chr> "ID3216090", "ID3216031", "ID3216140", "ID3216030", "ID3216~
$ ADM2_EN <chr> "Bekasi", "Bekasi", "Bekasi", "Bekasi", "Bekasi", "Bekasi",~
$ ADM2_PCODE <chr> "ID3216", "ID3216", "ID3216", "ID3216", "ID3216", "ID3216",~
$ DATA <int> 297645, 27363, 49018, 92168, 281824, 278237, 100714, 278476~
$ X <lgl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,~
glimpse(Kotabekasi1)Rows: 630
Columns: 7
$ Shape_Leng <chr> "0,58719641835", "0,50154897847", "0,40661875817", "0,35133~
$ Shape_Area <chr> "0,00538877381", "0,00432079619", "0,00404601403", "0,00328~
$ ADM3_EN <chr> "Babelan", "Bojongmangu", "Cabangbungin", "Cibarusah", "Cib~
$ ADM3_PCODE <chr> "ID3216090", "ID3216031", "ID3216140", "ID3216030", "ID3216~
$ ADM2_EN <chr> "Bekasi", "Bekasi", "Bekasi", "Bekasi", "Bekasi", "Bekasi",~
$ ADM2_PCODE <chr> "ID3216", "ID3216", "ID3216", "ID3216", "ID3216", "ID3216",~
$ DATA <int> 297645, 27363, 49018, 92168, 281824, 278237, 100714, 278476~
glimpse(Kotabekasi2)Rows: 35
Columns: 7
$ Shape_Leng <chr> "0,587196418", "0,501548978", "0,406618758", "0,351337648",~
$ Shape_Area <chr> "0,005388774", "0,004320796", "0,004046014", "0,003286197",~
$ ADM3_EN <chr> "Babelan", "Bojongmangu", "Cabangbungin", "Cibarusah", "Cib~
$ ADM3_PCODE <chr> "ID3216090", "ID3216031", "ID3216140", "ID3216030", "ID3216~
$ ADM2_EN <chr> "Bekasi", "Bekasi", "Bekasi", "Bekasi", "Bekasi", "Bekasi",~
$ ADM2_PCODE <chr> "ID3216", "ID3216", "ID3216", "ID3216", "ID3216", "ID3216",~
$ DATA <int> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,~