Lewati ke konten utama

Membaca dan Mengimpor File Excel ke R dengan readxl

Dalam artikel ini, pelajari cara mengimpor file Excel ke R dengan pustaka readxl.
· 5 mnt Baca

Jelajahi bersama AI

Walau banyak organisasi menyimpan data dalam basis data dan opsi penyimpanan seperti AWS, Azure, dan GCP, spreadsheet Microsoft Excel tetap banyak digunakan untuk menyimpan dataset yang lebih kecil.

Fungsionalitas ilmu data di Excel lebih terbatas dibandingkan R, sehingga akan berguna jika Anda dapat mengimpor data dari spreadsheet ke R.

Dalam tutorial ini, kita akan membahas cara membaca lembar kerja Excel (serta baris dan kolom tertentu) ke R menggunakan paket readxl.

Untuk memahaminya, Anda memerlukan pengetahuan dasar tentang R. 

Untuk panduan yang lebih umum tentang mengimpor berbagai tipe file ke R, baca Cara Mengimpor Data ke R: Sebuah Tutorial.

Berkas Excel

Dataset yang akan kita baca ke R berukuran kecil dengan hanya dua sheet untuk menunjukkan cara menentukan sheet yang akan dibaca. Anda dapat menemukannya di sini.

Sheet pertama adalah dataset pemasaran bank dengan 45.211 baris dan 17 kolom. Tangkapan layar di bawah berasal dari file excel “sample.xlsx” dan nama sheet “bank-full”.

Screenshot 2023-03-08 at 9.05.49 PM.png

Sheet kedua adalah dataset Iris dengan 150 baris dan 6 kolom yang berisi informasi tentang jenis bunga Iris, seperti panjang dan lebar sepal serta petalnya. Tangkapan layar di bawah berasal dari file excel yang sama, “sample.xlsx” dan nama sheet “iris”. 

Screenshot 2023-03-08 at 9.08.53 PM.png

Gambaran Paket

Tutorial ini menggunakan paket readxl. Paket openxlsx adalah alternatif yang cukup baik dan juga mencakup kemampuan untuk menulis ke file XLSX, tetapi integrasinya dengan paket tidyverse seperti dplyr dan tidyr kurang kuat.

Untuk membaca file Excel dengan paket readxl, kita perlu memasang paketnya terlebih dahulu lalu mengimpornya menggunakan fungsi “library”.

install.packages("readxl")

Anda akan melihat keluaran seperti di bawah ini di konsol, menandakan pemasangan berhasil.

trying URL 'https://cran.rstudio.com/bin/macosx/big-sur-arm64/contrib/4.2/readxl_1.4.2.tgz'
Content type 'application/x-gzip' length 1545782 bytes (1.5 MB)
==================================================
downloaded 1.5 MB


The downloaded binary packages are in
/var/folders/mq/46mc_8tj06n0wh2xjkk08r140000gn/T//RtmpHIGYqM/downloaded_packages

Untuk menggunakan metode “readxl”, jalankan perintah di bawah ini di konsol R.

library(readxl)

Perlu dicatat bahwa paket openxlsx adalah alternatif lain yang baik untuk menulis ke file XLSX.

Membaca Workbook Pertama

Mari kita baca semua data dari lembar kerja pertama, “bank-full”, dengan read_xlsx() dan hanya argumen path.

bank_df <- read_xlsx(path = "sample.xlsx")

Data hasilnya berupa tibble.

Screenshot 2023-03-09 at 7.40.15 AM.png

Anda juga dapat menggunakan read_excel() dengan cara yang sama seperti read_xlsx(), dan semua argumen yang akan Anda lihat di bagian-bagian berikut bekerja serupa dengan fungsi ini. read_excel() akan mencoba menebak apakah Anda memiliki spreadsheet XLSX, atau tipe spreadsheet XLS yang lebih lama.

bank_df <- read_excel(path = "sample.xlsx")

Screenshot 2023-03-09 at 7.40.15 AM (1).png

Membaca Workbook Lain

Sekarang mari kita baca semua data dari workbook kedua, yaitu “iris” dengan fungsi read_xlsx() dan argumen sheet.

iris <- read_xlsx("sample.xlsx", sheet = "iris")

Screenshot 2023-03-09 at 7.12.08 AM.png

Anda juga dapat menentukan nomor sheet pada argumen sheet alih-alih nama sheet.

iris2 <- read_xlsx("sample.xlsx", sheet = 1)

Screenshot 2023-03-09 at 7.12.21 AM.png

Membaca Baris Tertentu

Mari membaca baris-baris tertentu dari sebuah workbook dengan mengatur argumen skip dan n_max. Untuk melewati beberapa baris pertama, Anda dapat menggunakan argumen skip dengan nilai sama dengan jumlah baris yang ingin dilewati.

bank_df_s2 <- read_excel("sample.xlsx", sheet = "bank-full", skip = 2)

Perlu diperhatikan bahwa kode di atas juga melewati header. Anda akan mempelajari cara menentukan header secara eksplisit pada fungsi read_xlsx() di bagian-bagian selanjutnya.

Screenshot 2023-03-09 at 7.17.01 AM.png

Demikian pula, untuk membaca n baris pertama, tentukan argumen n_max pada fungsi read_xlsx(). Kode di bawah membaca 1.000 baris pertama dari sheet “bank-full”.

bank_df_n1k <- read_excel("sample.xlsx", sheet = "bank-full", n_max = 1000)

Screenshot 2023-03-09 at 7.18.41 AM.png

Anda juga dapat menggabungkan kedua argumen untuk melewati beberapa baris dan membaca sejumlah baris tertentu dari sisa dataset.

Membaca Sel Tertentu

Sementara argumen “skip” dan “n_max” memungkinkan Anda membaca sebagian baris data, Anda dapat membaca sel-sel tertentu dari sebuah workbook dengan mengatur argumen range.

Ada dua notasi untuk menentukan subset dataset:

  • Notasi A1 (E4:G8) - A mewakili kolom, dan 1 mewakili nomor baris.
  • Notasi R1C1 (R4C5:R8C7) - Nomor baris dan nomor kolom ditentukan secara eksplisit

Intinya adalah menentukan koordinat persegi panjang yang ingin Anda potong dari dataset.

Notasi 1:

bank_df_range1 <- read_excel("sample.xlsx", sheet = "bank-full", range = "A3:E10")

Notasi 2:

bank_df_range2 <- read_excel("sample.xlsx", sheet = "bank-full", 

                 range = "R3C1:R10C5")

Range juga memungkinkan Anda menyertakan nama sheet dalam argumen (contoh: wbook!E4:G8).

bank_df_range3 <- read_excel("sample.xlsx", range = "bank-full!R3C1:R10C5")

Membaca Data Tanpa Baris Header

Mari membaca data yang tidak memiliki baris header dengan mengatur argumen col_names ke sebuah vektor karakter. 

PS: Kita menggunakan argumen skip terlebih dahulu untuk menghapus baris header.

columns <- c("ID", "Sepal Length", "Sepal Width", "Petal Length", "Petal Width", "Species Name")

iris3 <- read_excel("sample.xlsx", sheet = 2, skip = 1, col_names = columns)

Screenshot 2023-03-09 at 7.19.30 AM.png

Memperbaiki Nama Header

Pada bagian terakhir, header yang kita tentukan dipisahkan spasi. Anda dapat mengubah nama header menjadi variabel R yang sintaktis dengan argumen .name_repair = "universal".

iris4 <- read_excel("sample.xlsx", sheet = 2, skip = 1,
                  col_names = columns, .name_repair = "universal")

Screenshot 2023-03-09 at 7.19.56 AM.png

Menentukan Tipe Kolom

Secara bawaan, saat Anda membaca file excel, R akan menebak tipe data setiap variabel.  Mari amati tipe kolom dari dataset iris yang dibaca menggunakan argumen default.

sapply(iris, class)
  Id SepalLengthCm  SepalWidthCm PetalLengthCm  PetalWidthCm       Species
    "numeric"     "numeric"     "numeric"     "numeric"     "numeric"   "character" 

Untuk menimpa tebakan tipe kolom, Anda dapat menggunakan argumen col_types.

iris5 <- read_excel("sample.xlsx", sheet = 2,
      col_types = c("numeric", "numeric", "numeric", "numeric", "numeric", "text"))

sapply(iris5, class)
    Id SepalLengthCm  SepalWidthCm PetalLengthCm  PetalWidthCm       Species
    "numeric"     "numeric"     "numeric"     "numeric"     "numeric"   "character" 

Screenshot 2023-03-09 at 7.20.14 AM.png

Anda juga dapat membiarkan R menebak tipe kolom untuk variabel tertentu dengan menentukan nilai col_types sebagai “guess” untuk kolom tersebut.

iris6 <- read_excel("sample.xlsx", sheet = 2,
        col_types = c("guess", "numeric", "numeric", "numeric", "numeric", "text"))

sapply(iris6, class)
Id SepalLengthCm  SepalWidthCm PetalLengthCm  PetalWidthCm       Species
    "numeric"     "numeric"     "numeric"     "numeric"     "numeric"   "character" 

Screenshot 2023-03-09 at 7.20.27 AM.png

Melewati Kolom

Sering kali Anda mendengar orang berkata, semakin banyak data semakin baik. Namun dalam banyak kasus, Anda mendapati sebagian variabel/kolom tidak membawa sinyal apa pun, yang bisa disebabkan oleh salah satu alasan di bawah ini. 

  • kardinalitas tinggi: hampir setiap nilai berbeda
  • kardinalitas nol: setiap nilai sama
  • tidak terkait dengan use case bisnis
  • terlalu banyak nilai hilang
  • terlalu banyak nilai sampah

Anda dapat melewati pembacaan beberapa kolom dengan mengatur col_types ke "skip" seperti diperlihatkan di bawah.

iris7 <- read_excel("sample.xlsx", sheet = 2,
            col_types = c("numeric", "skip", "skip", "numeric", "numeric", "text"))

sapply(iris7, class)

Screenshot 2023-03-09 at 7.20.36 AM.pngBawa ke Tingkat Berikutnya

Di dunia di mana data dihasilkan dengan kecepatan yang sangat besar dan dalam berbagai bentuk, bahasa pemrograman Anda harus mendukung pembacaan tipe data tersebut. R adalah salah satu bahasa yang kuat untuk mendukung upaya ini. Daftarkan diri Anda di kursus “Introduction to Importing Data in R” untuk mempelajari bagaimana R menyediakan paket untuk mengimpor berbagai dataset. Kursus ini menawarkan tutorial dan kuis untuk memperkuat pemahaman Anda tentang pengimporan data di R.

Pertanyaan yang Sering Diajukan

Dapatkah R mengimpor data CSV dan Excel untuk proyek?

Ya, R dapat mengimpor data CSV dan Excel untuk proyek, dan R menyediakan paket serta fungsi andal untuk menangani kedua format tersebut. Baca panduan kami tentang CSV vs. Excel untuk perbandingan terperinci dan panduan tentang membuat pilihan yang tepat untuk proyek data Anda.

Topik

Terkait

blogs

Tutorial Korelasi di R

blogs

Spaghetti Plot dan Jalur Badai

blogs

40 Pertanyaan Wawancara DBMS Teratas di 2026