Ini adalah bagian pertama dari bebrapa tulisan tentang database dan R. Dalam rangkaian tulisan ini akan membahas cara membuat koneksi R dan beberapa database yang banyak digunakan, import dan export data. Database yang akan dibahas (yang pernah digunakan oleh penulis :P) adalah Ms Excel (Excel sebagai database? Ya!), SQLite, MySQL, PostgreSQL, dan Ms SQL Server (via ODBC). Pada tulisan ini akan dibahas penggunaan Ms Excel sebagai database. Anda dapat mebaca posting berikutnya tentang penggunaan R dan SQLite.
Tentu saja Ms Excel juga dapat digunakan seperti sebuah database. Sebuah file Excel dianggap sebagai sebuah database dan masing-masing sheet yang ada di dalamnya dianggap sebagai sebuah tabel. Data untuk tutorial ini dapat Anda download disini. Terminologi yang digunakan dalam tulisan ini:
| Istilah | Padanan |
|---|---|
| database Ms Excel/Excel | File Ms Excel |
| tabel/worksheet | worksheet di Ms Excel |
library(openxlsx)
openxlsx mempunyai banyak kelebihan dari beberapa package lain yang digunakan untuk interface R dan Ms Excel. Diantaranya dapat menyimpan data dari R ke Excel (export), Conditional Formating, Freeze Pane, dll.
wb <- loadWorkbook(file = "XLSXdb.xlsx")
names(wb) # nama sheet
[1] "iris" "mtcars"
Terdapat 2 tabel (worksheet) yang ada pada database Excel tersebut, yaitu iris pada worksheet pertama dan mtcars pada worksheet kedua. Selanjutnya import tabel dari database Excel sebagai data.frame menggunakan fungsi readWorkbook().
iris_xl <- readWorkbook(xlsxFile = wb, sheet = "iris")
mtcars_xl <- readWorkbook(xlsxFile = wb, sheet = 2)
head(iris_xl)
head(mtcars_xl)
Dua tabel pada database Excel tersebut berhasil diimport ke R.
Untuk menyimpan data.frame di R ke database Excel sebagai berikut.
Misalnya Anda ingin menyimpan data ke database Excel dan ingin menyimpannya di sebuah worksheet baru yang belum ada. Jika dianalogikan dengan database pada umumnya, hal ini seperti membuat sebuah tabel baru yang belum ada di database. Misalnya Anda akan menyimpan data.frame cars ke database Excel.
addWorksheet().addWorksheet(wb, sheetName = "cars")
Worksheet yang baru tersebut bernama cars.
writeData() atau writeDataTable().writeDataTable(wb = wb, sheet = "cars", x = cars)
saveWorkbook(wb, file = "XLSXdb.xlsx", overwrite = TRUE)
Sayangnya package openxlsx belum mendukung untuk menyimpan tabel pada worksheet yang sudah ada (replace). Namun Anda masih tetap dapat me-replace dengan cara berikut.
removeWorksheet(wb, sheet = "cars")
addWorksheet(wb, sheetName = "cars")
writeDataTable(wb, sheet = "cars", x = women) # mengganti data pada worksheet yang sama dengan data lain
saveWorkbook(wb, file = "XLSXdb.xlsx", overwrite = TRUE)