Dalam analisis data modern, kemampuan untuk terhubung dan mengelola
database relasional merupakan keterampilan penting. R menyediakan
berbagai paket yang memungkinkan pengguna untuk berinteraksi dengan
berbagai sistem manajemen basis data (DBMS) seperti SQLite, MySQL,
PostgreSQL, dan lainnya melalui antarmuka yang konsisten. Dokumen ini
akan membahas langkah-langkah koneksi database di R, perbedaan antara
fungsi pengambilan data, serta teknik penggabungan tabel menggunakan
sintaks dplyr dan SQL.
Berikut adalah beberapa paket R yang umum digunakan untuk koneksi dan manipulasi database:
DBI: Antarmuka umum untuk operasi
database di R.
RSQLite: Khusus untuk database
SQLite.
RMysQL: Untuk database
MySQL.
RPostgres: Untuk
PostgreSQL.
odbc: Untuk database yang mendukung
ODBC.
dplyr & dbplyr:
Mengonversi sintaks dplyr menjadi kueri SQL.
## Warning: package 'tidyverse' was built under R version 4.5.1
## Warning: package 'ggplot2' was built under R version 4.5.2
## Warning: package 'tibble' was built under R version 4.5.1
## Warning: package 'tidyr' was built under R version 4.5.2
## Warning: package 'readr' was built under R version 4.5.1
## Warning: package 'purrr' was built under R version 4.5.1
## Warning: package 'dplyr' was built under R version 4.5.1
## Warning: package 'forcats' was built under R version 4.5.1
## Warning: package 'lubridate' was built under R version 4.5.1
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr 1.1.4 ✔ readr 2.1.5
## ✔ forcats 1.0.0 ✔ stringr 1.5.2
## ✔ ggplot2 4.0.0 ✔ tibble 3.3.0
## ✔ lubridate 1.9.4 ✔ tidyr 1.3.1
## ✔ purrr 1.1.0
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag() masks stats::lag()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
## Warning: package 'RSQLite' was built under R version 4.5.1
## Warning: package 'DBI' was built under R version 4.5.1
Proses koneksi ke database dari R mengikuti alur berikut:
Panggil paket DBI:
Panggil paket driver database (misal
RSQLite):
Buka koneksi dengan
dbConnect():
Cek tabel yang tersedia dengan
dbListTables():
## [1] "Album" "Artist" "Customer" "Employee"
## [5] "Genre" "Invoice" "InvoiceLine" "MediaType"
## [9] "Playlist" "PlaylistTrack" "Track"Jalankan kueri SQL dengan
dbGetQuery() atau dbSendQuery().
Tutup koneksi setelah selesai:
Database Chinook digunakan sebagai contoh. Berikut langkah-langkahnya:
# Koneksi ke database
chinook <- dbConnect(SQLite(), "C:\\Users\\Legion\\Documents\\Asisten Dosen\\Sains Data\\P3-Pengolahan-Database-dan-Data-Spasial-Menggunakan-R\\Chinook_Sqlite.sqlite")
# Lihat tabel yang ada
dbListTables(chinook) ## [1] "Album" "Artist" "Customer" "Employee"
## [5] "Genre" "Invoice" "InvoiceLine" "MediaType"
## [9] "Playlist" "PlaylistTrack" "Track"
## Rows: ??
## Columns: 13
## Database: sqlite 3.50.4 [C:\Users\Legion\Documents\Asisten Dosen\Sains Data\P3-Pengolahan-Database-dan-Data-Spasial-Menggunakan-R\Chinook_Sqlite.sqlite]
## $ CustomerId <int> 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17…
## $ FirstName <chr> "Luís", "Leonie", "François", "Bjørn", "František", "Hele…
## $ LastName <chr> "Gonçalves", "Köhler", "Tremblay", "Hansen", "Wichterlová…
## $ Company <chr> "Embraer - Empresa Brasileira de Aeronáutica S.A.", NA, N…
## $ Address <chr> "Av. Brigadeiro Faria Lima, 2170", "Theodor-Heuss-Straße …
## $ City <chr> "São José dos Campos", "Stuttgart", "Montréal", "Oslo", "…
## $ State <chr> "SP", NA, "QC", NA, NA, NA, NA, NA, NA, "SP", "SP", "RJ",…
## $ Country <chr> "Brazil", "Germany", "Canada", "Norway", "Czech Republic"…
## $ PostalCode <chr> "12227-000", "70174", "H2G 1A7", "0171", "14700", "14300"…
## $ Phone <chr> "+55 (12) 3923-5555", "+49 0711 2842222", "+1 (514) 721-4…
## $ Fax <chr> "+55 (12) 3923-5566", NA, NA, NA, "+420 2 4172 5555", NA,…
## $ Email <chr> "luisg@embraer.com.br", "leonekohler@surfeu.de", "ftrembl…
## $ SupportRepId <int> 3, 5, 3, 4, 4, 5, 5, 4, 4, 4, 5, 3, 4, 5, 3, 4, 5, 3, 3, …
Catatan: Objek tbl hanya terhubung ke
database, tidak disimpan sepenuhnya di memori R. Ini menghemat RAM untuk
dataset besar.
dbGetQuery() dan
dbSendQuery()| Aspek | dbGetQuery() |
dbSendQuery() |
|---|---|---|
| Tujuan | Mengeksekusi kueri dan langsung mengambil hasil sebagai
data.frame. |
Mengirim kueri tanpa langsung mengambil hasil. |
| Manajemen Memori | Semua hasil dimuat sekaligus ke RAM. | Data dapat diambil bertahap dengan
dbFetch(). |
| Pembersihan | Otomatis. | Harus dibersihkan manual dengan
dbClearResult(). |
Contoh dbGetQuery():
## 'data.frame': 8 obs. of 15 variables:
## $ EmployeeId: int 1 2 3 4 5 6 7 8
## $ LastName : chr "Adams" "Edwards" "Peacock" "Park" ...
## $ FirstName : chr "Andrew" "Nancy" "Jane" "Margaret" ...
## $ Title : chr "General Manager" "Sales Manager" "Sales Support Agent" "Sales Support Agent" ...
## $ ReportsTo : int NA 1 2 2 2 1 6 6
## $ BirthDate : chr "1962-02-18 00:00:00" "1958-12-08 00:00:00" "1973-08-29 00:00:00" "1947-09-19 00:00:00" ...
## $ HireDate : chr "2002-08-14 00:00:00" "2002-05-01 00:00:00" "2002-04-01 00:00:00" "2003-05-03 00:00:00" ...
## $ Address : chr "11120 Jasper Ave NW" "825 8 Ave SW" "1111 6 Ave SW" "683 10 Street SW" ...
## $ City : chr "Edmonton" "Calgary" "Calgary" "Calgary" ...
## $ State : chr "AB" "AB" "AB" "AB" ...
## $ Country : chr "Canada" "Canada" "Canada" "Canada" ...
## $ PostalCode: chr "T5K 2N1" "T2P 2T3" "T2P 5M5" "T2P 5G3" ...
## $ Phone : chr "+1 (780) 428-9482" "+1 (403) 262-3443" "+1 (403) 262-3443" "+1 (403) 263-4423" ...
## $ Fax : chr "+1 (780) 428-3457" "+1 (403) 262-3322" "+1 (403) 262-6712" "+1 (403) 263-4289" ...
## $ Email : chr "andrew@chinookcorp.com" "nancy@chinookcorp.com" "jane@chinookcorp.com" "margaret@chinookcorp.com" ...
Contoh dbSendQuery():
query <- dbSendQuery(chinook, "SELECT * FROM Customer")
while (!dbHasCompleted(query)) {
chunk <- dbFetch(query, n = 10)
print(chunk)
}## CustomerId FirstName LastName
## 1 1 Luís Gonçalves
## 2 2 Leonie Köhler
## 3 3 François Tremblay
## 4 4 Bjørn Hansen
## 5 5 František Wichterlová
## 6 6 Helena Holý
## 7 7 Astrid Gruber
## 8 8 Daan Peeters
## 9 9 Kara Nielsen
## 10 10 Eduardo Martins
## Company
## 1 Embraer - Empresa Brasileira de Aeronáutica S.A.
## 2 <NA>
## 3 <NA>
## 4 <NA>
## 5 JetBrains s.r.o.
## 6 <NA>
## 7 <NA>
## 8 <NA>
## 9 <NA>
## 10 Woodstock Discos
## Address City State
## 1 Av. Brigadeiro Faria Lima, 2170 São José dos Campos SP
## 2 Theodor-Heuss-Straße 34 Stuttgart <NA>
## 3 1498 rue Bélanger Montréal QC
## 4 Ullevålsveien 14 Oslo <NA>
## 5 Klanova 9/506 Prague <NA>
## 6 Rilská 3174/6 Prague <NA>
## 7 Rotenturmstraße 4, 1010 Innere Stadt Vienne <NA>
## 8 Grétrystraat 63 Brussels <NA>
## 9 Sønder Boulevard 51 Copenhagen <NA>
## 10 Rua Dr. Falcão Filho, 155 São Paulo SP
## Country PostalCode Phone Fax
## 1 Brazil 12227-000 +55 (12) 3923-5555 +55 (12) 3923-5566
## 2 Germany 70174 +49 0711 2842222 <NA>
## 3 Canada H2G 1A7 +1 (514) 721-4711 <NA>
## 4 Norway 0171 +47 22 44 22 22 <NA>
## 5 Czech Republic 14700 +420 2 4172 5555 +420 2 4172 5555
## 6 Czech Republic 14300 +420 2 4177 0449 <NA>
## 7 Austria 1010 +43 01 5134505 <NA>
## 8 Belgium 1000 +32 02 219 03 03 <NA>
## 9 Denmark 1720 +453 3331 9991 <NA>
## 10 Brazil 01007-010 +55 (11) 3033-5446 +55 (11) 3033-4564
## Email SupportRepId
## 1 luisg@embraer.com.br 3
## 2 leonekohler@surfeu.de 5
## 3 ftremblay@gmail.com 3
## 4 bjorn.hansen@yahoo.no 4
## 5 frantisekw@jetbrains.com 4
## 6 hholy@gmail.com 5
## 7 astrid.gruber@apple.at 5
## 8 daan_peeters@apple.be 4
## 9 kara.nielsen@jubii.dk 4
## 10 eduardo@woodstock.com.br 4
## CustomerId FirstName LastName Company
## 1 11 Alexandre Rocha Banco do Brasil S.A.
## 2 12 Roberto Almeida Riotur
## 3 13 Fernanda Ramos <NA>
## 4 14 Mark Philips Telus
## 5 15 Jennifer Peterson Rogers Canada
## 6 16 Frank Harris Google Inc.
## 7 17 Jack Smith Microsoft Corporation
## 8 18 Michelle Brooks <NA>
## 9 19 Tim Goyer Apple Inc.
## 10 20 Dan Miller <NA>
## Address City State Country PostalCode
## 1 Av. Paulista, 2022 São Paulo SP Brazil 01310-200
## 2 Praça Pio X, 119 Rio de Janeiro RJ Brazil 20040-020
## 3 Qe 7 Bloco G Brasília DF Brazil 71020-677
## 4 8210 111 ST NW Edmonton AB Canada T6G 2C7
## 5 700 W Pender Street Vancouver BC Canada V6C 1G8
## 6 1600 Amphitheatre Parkway Mountain View CA USA 94043-1351
## 7 1 Microsoft Way Redmond WA USA 98052-8300
## 8 627 Broadway New York NY USA 10012-2612
## 9 1 Infinite Loop Cupertino CA USA 95014
## 10 541 Del Medio Avenue Mountain View CA USA 94040-111
## Phone Fax Email
## 1 +55 (11) 3055-3278 +55 (11) 3055-8131 alero@uol.com.br
## 2 +55 (21) 2271-7000 +55 (21) 2271-7070 roberto.almeida@riotur.gov.br
## 3 +55 (61) 3363-5547 +55 (61) 3363-7855 fernadaramos4@uol.com.br
## 4 +1 (780) 434-4554 +1 (780) 434-5565 mphilips12@shaw.ca
## 5 +1 (604) 688-2255 +1 (604) 688-8756 jenniferp@rogers.ca
## 6 +1 (650) 253-0000 +1 (650) 253-0000 fharris@google.com
## 7 +1 (425) 882-8080 +1 (425) 882-8081 jacksmith@microsoft.com
## 8 +1 (212) 221-3546 +1 (212) 221-4679 michelleb@aol.com
## 9 +1 (408) 996-1010 +1 (408) 996-1011 tgoyer@apple.com
## 10 +1 (650) 644-3358 <NA> dmiller@comcast.com
## SupportRepId
## 1 5
## 2 3
## 3 4
## 4 5
## 5 3
## 6 4
## 7 5
## 8 3
## 9 3
## 10 4
## CustomerId FirstName LastName Company Address
## 1 21 Kathy Chase <NA> 801 W 4th Street
## 2 22 Heather Leacock <NA> 120 S Orange Ave
## 3 23 John Gordon <NA> 69 Salem Street
## 4 24 Frank Ralston <NA> 162 E Superior Street
## 5 25 Victor Stevens <NA> 319 N. Frances Street
## 6 26 Richard Cunningham <NA> 2211 W Berry Street
## 7 27 Patrick Gray <NA> 1033 N Park Ave
## 8 28 Julia Barnett <NA> 302 S 700 E
## 9 29 Robert Brown <NA> 796 Dundas Street West
## 10 30 Edward Francis <NA> 230 Elgin Street
## City State Country PostalCode Phone Fax
## 1 Reno NV USA 89503 +1 (775) 223-7665 <NA>
## 2 Orlando FL USA 32801 +1 (407) 999-7788 <NA>
## 3 Boston MA USA 2113 +1 (617) 522-1333 <NA>
## 4 Chicago IL USA 60611 +1 (312) 332-3232 <NA>
## 5 Madison WI USA 53703 +1 (608) 257-0597 <NA>
## 6 Fort Worth TX USA 76110 +1 (817) 924-7272 <NA>
## 7 Tucson AZ USA 85719 +1 (520) 622-4200 <NA>
## 8 Salt Lake City UT USA 84102 +1 (801) 531-7272 <NA>
## 9 Toronto ON Canada M6J 1V1 +1 (416) 363-8888 <NA>
## 10 Ottawa ON Canada K2P 1L7 +1 (613) 234-3322 <NA>
## Email SupportRepId
## 1 kachase@hotmail.com 5
## 2 hleacock@gmail.com 4
## 3 johngordon22@yahoo.com 4
## 4 fralston@gmail.com 3
## 5 vstevens@yahoo.com 5
## 6 ricunningham@hotmail.com 4
## 7 patrick.gray@aol.com 4
## 8 jubarnett@gmail.com 5
## 9 robbrown@shaw.ca 3
## 10 edfrancis@yachoo.ca 3
## CustomerId FirstName LastName Company
## 1 31 Martha Silk <NA>
## 2 32 Aaron Mitchell <NA>
## 3 33 Ellie Sullivan <NA>
## 4 34 João Fernandes <NA>
## 5 35 Madalena Sampaio <NA>
## 6 36 Hannah Schneider <NA>
## 7 37 Fynn Zimmermann <NA>
## 8 38 Niklas Schröder <NA>
## 9 39 Camille Bernard <NA>
## 10 40 Dominique Lefebvre <NA>
## Address City State Country
## 1 194A Chain Lake Drive Halifax NS Canada
## 2 696 Osborne Street Winnipeg MB Canada
## 3 5112 48 Street Yellowknife NT Canada
## 4 Rua da Assunção 53 Lisbon <NA> Portugal
## 5 Rua dos Campeões Europeus de Viena, 4350 Porto <NA> Portugal
## 6 Tauentzienstraße 8 Berlin <NA> Germany
## 7 Berger Straße 10 Frankfurt <NA> Germany
## 8 Barbarossastraße 19 Berlin <NA> Germany
## 9 4, Rue Milton Paris <NA> France
## 10 8, Rue Hanovre Paris <NA> France
## PostalCode Phone Fax Email SupportRepId
## 1 B3S 1C5 +1 (902) 450-0450 <NA> marthasilk@gmail.com 5
## 2 R3L 2B9 +1 (204) 452-6452 <NA> aaronmitchell@yahoo.ca 4
## 3 X1A 1N6 +1 (867) 920-2233 <NA> ellie.sullivan@shaw.ca 3
## 4 <NA> +351 (213) 466-111 <NA> jfernandes@yahoo.pt 4
## 5 <NA> +351 (225) 022-448 <NA> masampaio@sapo.pt 4
## 6 10789 +49 030 26550280 <NA> hannah.schneider@yahoo.de 5
## 7 60316 +49 069 40598889 <NA> fzimmermann@yahoo.de 3
## 8 10779 +49 030 2141444 <NA> nschroder@surfeu.de 3
## 9 75009 +33 01 49 70 65 65 <NA> camille.bernard@yahoo.fr 4
## 10 75002 +33 01 47 42 71 71 <NA> dominiquelefebvre@gmail.com 4
## CustomerId FirstName LastName Company Address City
## 1 41 Marc Dubois <NA> 11, Place Bellecour Lyon
## 2 42 Wyatt Girard <NA> 9, Place Louis Barthou Bordeaux
## 3 43 Isabelle Mercier <NA> 68, Rue Jouvence Dijon
## 4 44 Terhi Hämäläinen <NA> Porthaninkatu 9 Helsinki
## 5 45 Ladislav Kovács <NA> Erzsébet krt. 58. Budapest
## 6 46 Hugh O'Reilly <NA> 3 Chatham Street Dublin
## 7 47 Lucas Mancini <NA> Via Degli Scipioni, 43 Rome
## 8 48 Johannes Van der Berg <NA> Lijnbaansgracht 120bg Amsterdam
## 9 49 Stanisław Wójcik <NA> Ordynacka 10 Warsaw
## 10 50 Enrique Muñoz <NA> C/ San Bernardo 85 Madrid
## State Country PostalCode Phone Fax
## 1 <NA> France 69002 +33 04 78 30 30 30 <NA>
## 2 <NA> France 33000 +33 05 56 96 96 96 <NA>
## 3 <NA> France 21000 +33 03 80 73 66 99 <NA>
## 4 <NA> Finland 00530 +358 09 870 2000 <NA>
## 5 <NA> Hungary H-1073 <NA> <NA>
## 6 Dublin Ireland <NA> +353 01 6792424 <NA>
## 7 RM Italy 00192 +39 06 39733434 <NA>
## 8 VV Netherlands 1016 +31 020 6223130 <NA>
## 9 <NA> Poland 00-358 +48 22 828 37 39 <NA>
## 10 <NA> Spain 28015 +34 914 454 454 <NA>
## Email SupportRepId
## 1 marc.dubois@hotmail.com 5
## 2 wyatt.girard@yahoo.fr 3
## 3 isabelle_mercier@apple.fr 3
## 4 terhi.hamalainen@apple.fi 3
## 5 ladislav_kovacs@apple.hu 3
## 6 hughoreilly@apple.ie 3
## 7 lucas.mancini@yahoo.it 5
## 8 johavanderberg@yahoo.nl 5
## 9 stanisław.wójcik@wp.pl 4
## 10 enrique_munoz@yahoo.es 5
## CustomerId FirstName LastName Company Address City
## 1 51 Joakim Johansson <NA> Celsiusg. 9 Stockholm
## 2 52 Emma Jones <NA> 202 Hoxton Street London
## 3 53 Phil Hughes <NA> 113 Lupus St London
## 4 54 Steve Murray <NA> 110 Raeburn Pl Edinburgh
## 5 55 Mark Taylor <NA> 421 Bourke Street Sidney
## 6 56 Diego Gutiérrez <NA> 307 Macacha Güemes Buenos Aires
## 7 57 Luis Rojas <NA> Calle Lira, 198 Santiago
## 8 58 Manoj Pareek <NA> 12,Community Centre Delhi
## 9 59 Puja Srivastava <NA> 3,Raj Bhavan Road Bangalore
## State Country PostalCode Phone Fax
## 1 <NA> Sweden 11230 +46 08-651 52 52 <NA>
## 2 <NA> United Kingdom N1 5LH +44 020 7707 0707 <NA>
## 3 <NA> United Kingdom SW1V 3EN +44 020 7976 5722 <NA>
## 4 <NA> United Kingdom EH4 1HH +44 0131 315 3300 <NA>
## 5 NSW Australia 2010 +61 (02) 9332 3633 <NA>
## 6 <NA> Argentina 1106 +54 (0)11 4311 4333 <NA>
## 7 <NA> Chile <NA> +56 (0)2 635 4444 <NA>
## 8 <NA> India 110017 +91 0124 39883988 <NA>
## 9 <NA> India 560001 +91 080 22289999 <NA>
## Email SupportRepId
## 1 joakim.johansson@yahoo.se 5
## 2 emma_jones@hotmail.com 3
## 3 phil.hughes@gmail.com 3
## 4 steve.murray@yahoo.uk 5
## 5 mark.taylor@yahoo.au 4
## 6 diego.gutierrez@yahoo.ar 4
## 7 luisrojas@yahoo.cl 5
## 8 manoj.pareek@rediff.com 3
## 9 puja_srivastava@yahoo.in 3
Kita dapat membuat database SQLite langsung dari R:
# Buat koneksi ke database baru
con2 <- dbConnect(SQLite(), "mydb.sqlite")
# Gunakan dataset contoh
library(mlbench)## Warning: package 'mlbench' was built under R version 4.5.2
data("BreastCancer")
names(BreastCancer) <- str_replace_all(names(BreastCancer), "\\.", "__")
# Tulis tabel ke database
dbWriteTable(con2, "BreastCancer", BreastCancer, overwrite = TRUE)
# Cek tabel
dbListTables(con2)## [1] "BreastCancer"
dplyrSintaks dplyr dapat diterjemahkan otomatis menjadi
SQL:
invoice_country <- tbl(chinook, "Invoice") %>%
group_by(BillingCountry) %>%
summarise(mean_invoice = mean(Total))
# Lihat kueri SQL-nya
show_query(invoice_country)## Warning: Missing values are always removed in SQL aggregation functions.
## Use `na.rm = TRUE` to silence this warning
## This warning is displayed once every 8 hours.
## <SQL>
## SELECT `BillingCountry`, AVG(`Total`) AS `mean_invoice`
## FROM `Invoice`
## GROUP BY `BillingCountry`
Penggabungan tabel adalah operasi fundamental dalam database. Berikut jenis-jenis join yang umum:
Inner Join: Hanya baris yang cocok di kedua tabel.
Left Join: Semua baris dari tabel kiri, dan yang cocok dari kanan.
Right Join: Semua baris dari tabel kanan, dan yang cocok dari kiri.
Full Join: Semua baris dari kedua tabel.
Semi Join: Baris dari kiri yang cocok dengan kanan (hanya kolom kiri).
Anti Join: Baris dari kiri yang tidak cocok dengan kanan.
data("band_members", package = "dplyr")
data("band_instruments", package = "dplyr")
# Inner Join
inner_join(band_members, band_instruments, by = "name")## Joining with `by = join_by(name)`
## Joining with `by = join_by(name)`
## Joining with `by = join_by(name)`
## Joining with `by = join_by(name)`
data("band_instruments2", package = "dplyr")
full_join(band_members, band_instruments2, by = c("name" = "artist"))res <- tbl(chinook, "Customer") %>%
select(CustomerId, FirstName, LastName, Country) %>%
left_join(tbl(chinook, "Invoice") %>%
select(CustomerId, Total),
by = "CustomerId")
glimpse(res)## Rows: ??
## Columns: 5
## Database: sqlite 3.50.4 [C:\Users\Legion\Documents\Asisten Dosen\Sains Data\P3-Pengolahan-Database-dan-Data-Spasial-Menggunakan-R\Chinook_Sqlite.sqlite]
## $ CustomerId <int> 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3,…
## $ FirstName <chr> "Luís", "Luís", "Luís", "Luís", "Luís", "Luís", "Luís", "Le…
## $ LastName <chr> "Gonçalves", "Gonçalves", "Gonçalves", "Gonçalves", "Gonçal…
## $ Country <chr> "Brazil", "Brazil", "Brazil", "Brazil", "Brazil", "Brazil",…
## $ Total <dbl> 3.98, 3.96, 5.94, 0.99, 1.98, 13.86, 8.91, 1.98, 13.86, 8.9…
Dokumen ini telah membahas:
Koneksi R ke database SQLite.
Penggunaan DBI, RSQLite, dan
dplyr untuk manipulasi data.
Perbedaan antara dbGetQuery dan
dbSendQuery.
Teknik penggabungan tabel dengan berbagai jenis join.
Dengan kemampuan ini, pengguna R dapat mengelola dan menganalisis data yang tersimpan dalam database relasional secara efisien, baik untuk dataset kecil maupun besar.