Impor Data di R: Baca File CSV, Excel, SPSS, Stata, SAS

โšก Ringkasan Cerdas

Mengimpor Data di R mencakup membaca file CSV dengan read.csv(), buku kerja Excel dengan readxl, dan file SAS, STATA, atau SPSS dengan haven. Panduan ini juga menunjukkan cara memilih lembar kerja, baris, dan rentang sel secara tepat saat impor.

  • ๐Ÿ“„ Impor CSV: read.csv(file, header = TRUE, sep = โ€œ,โ€) memuat file yang dipisahkan koma dari jalur lokal atau URL.
  • โš ๏ธ Perubahan Versi: Sejak R 4.0.0, kolom karakter tetap berupa karakter, karena stringsAsFactors sekarang secara default bernilai FALSE.
  • ๐Ÿ“— Impor Excel: Fungsi read_excel() dari readxl menangani file .xls dan .xlsx, sedangkan excel_sheets() pertama-tama mencantumkan semua lembar kerja.
  • ๐ŸŽฏ Seleksi Tepat: n_max membatasi jumlah baris, range menerima notasi Excel, dan cell_rows() atau cell_cols() menerima indeks dan huruf.
  • ๐Ÿ”„ Perangkat Lunak Lainnya: haven menyediakan read_sas(), read_dta(), dan read_sav(), yang masing-masing hanya membutuhkan jalur atau URL.
  • รฐลธยงยน Masukan Bersih: Ubah nilai yang hilang menjadi NA dan hindari spasi atau simbol dalam nama kolom sebelum mengimpor.

Impor Data di R

Data bisa ada dalam berbagai format. Untuk setiap format R mempunyai fungsi dan argumen tertentu. Tutorial ini menjelaskan cara mengimpor data ke R.

Membaca File CSV

Format data yang paling banyak digunakan adalah .csv, nilai yang dipisahkan koma. R memuat serangkaian pustaka selama proses startup, termasuk paket utils. Paket tersebut menyediakan read.csv(), cara standar untuk membuka file CSV. Berikut sintaksnya:

read.csv(file, header = TRUE, sep = ",")

Argumen:

  • fillet: PATH tempat file disimpan
  • Header: konfirmasi apakah file memiliki header atau tidak, secara default header disetel ke TRUE
  • September: simbol yang digunakan untuk membagi variabel. Secara default, `,`.

Kita akan membaca nama file data mtcats. File csv disimpan online. Jika file .csv Anda disimpan secara lokal, Anda dapat mengganti PATH di dalam cuplikan kode. Jangan lupa bungkus di dalam ' '. PATH harus berupa nilai string.

Untuk pengguna mac, path untuk folder download adalah:

 "/Users/USERNAME/Downloads/FILENAME.csv"

Untuk pengguna windows:

"C:\Users\USERNAME\Downloads\FILENAME.csv"

Perhatikan bahwa, kita harus selalu menentukan ekstensi nama file.

  • . CSV
  • . Xlsx
  • . Txt
  • ...
PATH <- 'https://raw.githubusercontent.com/guru99-edu/R-Programming/master/mtcars.csv'                
df <- read.csv(PATH, header =  TRUE, sep = ',')
length(df)

Keluaran:

## [1] 12
class(df$X)

Keluaran:

## [1] "factor"

Pada versi R sebelum 4.0.0, read.csv() mengkonversi setiap kolom karakter menjadi faktor, itulah sebabnya class(df$X) mengembalikan โ€œfaktorโ€ di atas. Anda dapat menonaktifkannya dengan stringsAsFactors = FALSE.

โš ๏ธ Catatan versi: sejak R 4.0.0 Nilai defaultnya adalah stringsAsFactors = FALSE, sehingga kolom karakter tetap berupa karakter dan contoh pertama sekarang mengembalikan "karakter" pada instalasi modern. Meneruskan argumen secara eksplisit, seperti di bawah ini, memberikan hasil yang sama pada setiap versi dan merupakan kebiasaan yang paling aman.

PATH <- 'https://raw.githubusercontent.com/guru99-edu/R-Programming/master/mtcars.csv'
df <-read.csv(PATH, header =TRUE, sep = ',', stringsAsFactors =FALSE)
class(df$X)

Keluaran:

## [1] "character"

Kelas untuk variabel X sekarang menjadi karakter.

read.csv() vs read_csv(): Mana yang Sebaiknya Anda Gunakan?

Fungsi read_csv() sudah termasuk dalam R dasar dan tidak memerlukan paket tambahan. Paket readr menambahkan fungsi read_csv(), yang lebih cepat dan mengurangi pengambilan keputusan otomatis.

Kriteria read.csv() (utils) read_csv() (readr)
Paket yang dibutuhkan None pembaca
Kecepatan pada file berukuran besar Lebih lambat Beberapa kali lebih cepat
Pengembalian bingkai data tibble
Nama kolom Spasi diubah menjadi titik Disimpan persis seperti yang tertulis.
Deteksi tipe Diam Dilaporkan dalam spesifikasi kolom
library(readr)
df <- read_csv(PATH)

# For very large files, data.table::fread() is faster still
library(data.table)
df <- fread(PATH)

Gunakan read.csv() untuk file kecil dan skrip yang harus dijalankan tanpa paket tambahan. Gunakan read_csv() ketika file berukuran besar atau ketika mempertahankan nama kolom yang tepat itu penting.

Membaca File Excel

Excel file sangat populer di kalangan analis data. Spreadsheet mudah digunakan dan fleksibel. R dilengkapi dengan perpustakaan readxl untuk mengimpor spreadsheet Excel.

Gunakan kode ini

require(readxl)

untuk memeriksa apakah readxl diinstal di mesin Anda. Jika Anda menginstal r dengan r-conda-essential, perpustakaan sudah diinstal. Anda akan melihat di jendela perintah:

Keluaran:

Loading required package: readxl.

Jika paket tersebut belum terpasang, Anda dapat memasangnya dengan conda. perpustakaan atau di terminal, gunakan conda install -c mittner r-readxl.

Gunakan perintah berikut untuk memuat perpustakaan guna mengimpor file excel.

library(readxl)

bacaxl_contoh()

Kami menggunakan contoh yang disertakan dalam paket readxl selama tutorial ini.

Gunakan kode

readxl_example()

untuk melihat semua spreadsheet yang tersedia di perpustakaan.

Bacaxl_Contoh

Untuk memeriksa lokasi spreadsheet tertentu, masukkan namanya:

readxl_example("geometry.xls")

Bacaxl_Contoh

Jika Anda menginstal R dengan conda, spreadsheet terletak di Anaconda3/lib/R/library/readxl/extdata/filename.xls

baca_excel()

Fungsi read_excel() membuka ekstensi .xls dan .xlsx serta memilih parser yang tepat secara otomatis.

Sintaksnya adalah:

read_excel(PATH, sheet = NULL, range= NULL, col_names = TRUE)
arguments:
-PATH: Path where the excel is located
-sheet: Select the sheet to import. By default, all
-range: Select the range to import. By default, all non-null cells
-col_names: Select the columns to import. By default, all non-null columns

Kita dapat mengimpor spreadsheet dari perpustakaan readxl dan menghitung jumlah kolom di lembar pertama.

# Store the path of `datasets.xlsx`
example <- readxl_example("datasets.xlsx")
# Import the spreadsheet
df <- read_excel(example)
# Count the number of columns
length(df)

Keluaran:

## [1] 5

excel_sheet()

File datasets.xlsx terdiri dari 4 lembar. Kita bisa mengetahui sheet mana saja yang tersedia di workbook dengan menggunakan fungsi excel_sheets()

example <- readxl_example("datasets.xlsx")

excel_sheets(example)

Keluaran:

[1] "iris"     "mtcars"   "chickwts" "quakes"

Jika lembar kerja berisi banyak lembar, mudah untuk memilih lembar tertentu dengan menggunakan argumen lembar. Kita dapat menentukan nama sheet atau indeks sheet. Kita dapat memverifikasi apakah kedua fungsi mengembalikan keluaran yang sama dengan identik().

example <- readxl_example("datasets.xlsx")
quake <- read_excel(example, sheet = "quakes")
quake_1 <-read_excel(example, sheet = 4)
identical(quake, quake_1)

Keluaran:

## [1] TRUE

Kita dapat mengontrol sel mana yang akan dibaca dengan 2 cara

  1. Gunakan argumen n_max untuk mengembalikan n baris
  2. Gunakan argumen rentang yang dikombinasikan dengan cell_rows atau cell_cols

Misalnya, kita menetapkan n_max sama dengan 5 untuk mengimpor lima baris pertama.

# Read the first five row: with header
iris <-read_excel(example, n_max =5, col_names =TRUE)

Excel_Sheet

Jika kita mengubah col_names menjadi FALSE, R akan membuat header secara otomatis.

# Read the first five row: without header
iris_no_header <-read_excel(example, n_max =5, col_names =FALSE)

iris_no_header

Dalam data frame iris_no_header, readxl menghasilkan lima nama placeholder. Versi lama menghasilkan X__1 hingga X__5, sedangkan versi saat ini menghasilkan โ€ฆ1 hingga โ€ฆ5.

Excel_Sheet

Kita juga dapat menggunakan rentang argumen untuk memilih baris dan kolom di spreadsheet. Pada kode di bawah ini, kita menggunakan style excel untuk memilih rentang A1 hingga B5.

# Read rows A1 to B5
example_1 <-read_excel(example, range = "A1:B5", col_names =TRUE)
dim(example_1)

Keluaran:

## [1] 4 2

example_1 mengembalikan 4 baris dan 2 kolom. Rentang A1:B5 mencakup lima baris spreadsheet, tetapi baris pertama digunakan sebagai header, itulah sebabnya dimensinya adalah 4 kali 2.

Excel_Sheet

Pada contoh kedua, kita menggunakan fungsi cell_rows() yang mengontrol rentang baris yang akan dikembalikan. Jika kita ingin mengimpor baris 1 hingga 5, kita dapat mengatur cell_rows(1:5). Perhatikan bahwa, cell_rows(1:5) mengembalikan output yang sama dengan cell_rows(5:1).

# Read rows 1 to 5
example_2 <-read_excel(example, range =cell_rows(1:5),col_names =TRUE)			
dim(example_2)

Keluaran:

## [1] 4 5

example_2, sebaliknya, berukuran 4 x 5. cell_rows(1:5) sekali lagi memperlakukan baris pertama sebagai header, sehingga empat baris data dikembalikan di kelima kolom.

Excel_Sheet

Jika kita ingin mengimpor baris yang tidak dimulai dari baris pertama, kita harus menyertakan col_names = FALSE. Jika kita menggunakan range = cell_rows(2:5), terlihat jelas bahwa frame data kita tidak memiliki header lagi.

iris_row_with_header <-read_excel(example, range =cell_rows(2:3), col_names=TRUE)
iris_row_no_header <-read_excel(example, range =cell_rows(2:3),col_names =FALSE)

Excel_Sheet

Anda juga dapat memilih kolom berdasarkan huruf, persis seperti di Excel:

# Select columns A and B
col <- read_excel(example, range = cell_cols("A:B"))
dim(col)

Keluaran:

## [1] 150   2

Catatan : range = cell_cols(โ€œA:Bโ€), mengembalikan output semua sel dengan nilai bukan nol. Kumpulan data berisi 150 baris, oleh karena itu, read_excel() mengembalikan baris hingga 150. Ini diverifikasi dengan fungsi dim().

Argumen `na` memberi tahu `read_excel()` nilai mana yang harus dianggap sebagai nilai yang hilang. Hitung nilainya dengan `sum()` dan `is.na()`:

  1. jumlah
  2. adalah.na

Ini kodenya

iris_na <-read_excel(example, na ="setosa")
sum(is.na(iris_na))

Keluaran:

## [1] 50

Kami memiliki 50 nilai yang hilang, yang merupakan baris milik spesies setosa.

Impor Data dari Perangkat Lunak Statistik Lainnya

Berkas dari paket statistik lain diimpor dengan cara berikut: surga paket, yang mendukung SAS, STATA dan SPSS. Kita dapat menggunakan fungsi berikut untuk membuka berbagai jenis dataset, sesuai dengan ekstensi file:

  • SAS: baca_sas()
  • STATA: read_dta() (atau read_stata(), yang identik)
  • SPSS: read_sav() atau read_por(). Kita perlu memeriksa ekstensinya

Masing-masing fungsi ini hanya membutuhkan satu argumen, yaitu PATH tempat file disimpan, dan masing-masing menerima sebuah URL semudah jalan setapak lokal.

library(haven)

surga datang dengan conda r-essential jika tidak pergi ke link atau di terminal conda install -c conda-forge r-haven

Membaca File SAS

Sebagai contoh, kami akan menggunakan dataset penerimaan dari IDRE.

PATH_sas <- 'https://github.com/guru99-edu/R-Programming/blob/master/binary.sas7bdat?raw=true'
df <- read_sas(PATH_sas)
head(df)

Keluaran:

## # A tibble: 6 x 4
##   ADMIT   GRE   GPA  RANK
##   <dbl> <dbl> <dbl> <dbl>
## 1     0   380  3.61     3
## 2     1   660  3.67     3
## 3     1   800  4.00     1
## 4     1   640  3.19     4
## 5     0   520  2.93     4
## 6     1   760  3.00     2

Membaca File STATA

Untuk file data STATA Anda dapat menggunakan read_dta(). Kami menggunakan kumpulan data yang persis sama tetapi menyimpannya dalam file .dta.

PATH_stata <- 'https://github.com/guru99-edu/R-Programming/blob/master/binary.dta?raw=true'
df <- read_dta(PATH_stata)
head(df)

Keluaran:

## # A tibble: 6 x 4				
##   admit   gre   gpa  rank				
##   <dbl> <dbl> <dbl> <dbl>				
## 1     0   380  3.61     3				
## 2     1   660  3.67     3				
## 3     1   800  4.00     1				
## 4     1   640  3.19     4				
## 5     0   520  2.93     4				
## 6     1   760  3.00     2

Membaca File SPSS

Fungsi read_sav() membuka file SPSS yang memiliki ekstensi .sav.

PATH_spss <- 'https://github.com/guru99-edu/R-Programming/blob/master/binary.sav?raw=true'
df <- read_sav(PATH_spss)
head(df)

Keluaran:

## # A tibble: 6 x 4				
##   admit   gre   gpa  rank				
##   <dbl> <dbl> <dbl> <dbl>				
## 1     0   380  3.61     3				
## 2     1   660  3.67     3			
## 3     1   800  4.00     1				
## 4     1   640  3.19     4				
## 5     0   520  2.93     4				
## 6     1   760  3.00     2

Praktik Terbaik untuk Impor Data

Menjalankan daftar periksa di bawah ini sebelum mengimpor akan menghemat sebagian besar pekerjaan pembersihan setelahnya:

  • Format umum untuk spreadsheet adalah menggunakan baris pertama sebagai header (biasanya nama variabel).
  • Hindari spasi kosong dalam nama file atau kolom, karena spasi dapat dibaca sebagai pemisah kolom. Gunakan garis bawah sebagai gantinya.
  • Nama pendek lebih disukai
  • Jangan menggunakan simbol dalam nama. Tulis exchange_rate_dollar_euro, bukan exchange_rate_$_โ‚ฌ.
  • Ganti nilai yang hilang dengan NA, bukan dengan spasi kosong, tanda hubung, atau angka sentinel seperti -99, yang jika tidak diganti harus dibersihkan setelahnya.

Mengimpor Data di R: Referensi Fungsi

Tabel di bawah ini mencantumkan fungsi impor untuk setiap jenis file, pustaka yang menyediakannya, dan argumen default-nya:

Perpustakaan Tujuan fungsi Argumen Default
utilitas Baca file CSV baca.csv() berkas, header = TRUE, sep = โ€œ,โ€
bacaxl Baca file EXCEL baca_excel() jalur, rentang = NULL, nama_kolom = BENAR
surga Baca file SAS baca_sas() path
surga Baca file STATA read_dta() / read_stata() path
surga Baca file SPSS baca_sav() path

Tabel kedua menunjukkan cara mengimpor pilihan dengan read_excel():

fungsi Tujuan kasus
baca_excel() Baca n jumlah baris n_maks = 10
Pilih baris dan kolom seperti di excel rentang = โ€œA1:D10โ€
Pilih baris dengan indeks rentang= baris_sel(1:3)
Pilih kolom dengan huruf rentang = sel_cols("A:C")

Pertanyaan Umum Demo Slot

R 4.0.0 mengubah nilai default stringsAsFactors dari TRUE menjadi FALSE. Kolom karakter sekarang tetap berupa karakter. Berikan argumen secara eksplisit jika skrip Anda harus berperilaku identik pada versi R yang lebih lama.

Ganti URL dengan jalur lokal lengkap dalam tanda kutip, seperti โ€œC:/Users/name/data.csvโ€. Gunakan garis miring ke depan atau garis miring terbalik ganda pada Windows, dan konfirmasikan direktori kerja dengan getwd().

readxl membaca file .xls dan .xlsx dalam R murni tanpa Java Ketergantungan. Hanya paket xlsx versi lama yang membutuhkannya. Java melalui rJava, itulah sebabnya readxl adalah pilihan yang direkomendasikan.

Perubahan tipe data secara diam-diam saat impor merupakan sumber umum hasil AI yang tidak dapat direproduksi. Mendeklarasikan tipe kolom secara eksplisit, seperti yang dilaporkan oleh read_csv(), memastikan dataset pelatihan dimuat secara identik setiap saat.

Ya. Asisten AI dapat mendiagnosis pemisah yang salah, masalah pengkodean, dan kesalahan pembacaan header dari pesan kesalahan. Selalu konfirmasikan hasilnya dengan str() atau glimpse() sebelum melanjutkan analisis.

Ringkaslah postingan ini dengan: