Import Data ke dalam R: Baca Fail CSV, Excel, SPSS, Stata, SAS

Data boleh wujud dalam pelbagai format. Untuk setiap format R mempunyai fungsi dan argumen tertentu. Tutorial ini menerangkan cara mengimport data ke R.

Dalam tutorial ini, anda akan belajar

Baca CSV

Salah satu penyimpanan data yang paling banyak adalah format fail .csv (nilai yang dipisahkan dengan koma). R memuatkan sebilangan perpustakaan semasa permulaan, termasuk paket utiliti. Pakej ini senang untuk membuka fail csv yang digabungkan dengan fungsi read.csv (). Berikut adalah sintaks untuk read.csv

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

Hujah :

  • fail : PATH tempat fail disimpan
  • kepala : sahkan jika fail mempunyai header atau tidak, secara lalai, header diatur ke TRUE
  • Sep : simbol yang digunakan untuk membahagi pemboleh ubah. Secara lalai, `,`.

Kami akan membaca nama fail data mtcats. Fail csv disimpan dalam talian. Sekiranya fail .csv anda disimpan secara tempatan, anda boleh mengganti PATH di dalam coretan kod. Jangan lupa membungkusnya di dalam ''. PATH mesti berupa nilai rentetan.

Untuk pengguna mac, jalan untuk folder muat turun adalah:

 '/Users/USERNAME/Downloads/FILENAME.csv'

Untuk pengguna windows:

'C:UsersUSERNAMEDownloadsFILENAME.csv'

Perhatikan bahawa, kita harus selalu menentukan lanjutan nama fail.

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

Pengeluaran:

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

Pengeluaran:

## [1] 'factor'

R, secara lalai, mengembalikan nilai watak sebagai Faktor. Kita boleh mematikan tetapan ini dengan menambahkan stringsAsFactors = FALSE.

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

Pengeluaran:

## [1] 'character'

Kelas untuk pemboleh ubah X kini adalah watak.

Baca fail Excel

Fail Excel sangat popular di kalangan penganalisis data. Lembaran kerja senang digunakan dan fleksibel. R dilengkapi dengan readxl perpustakaan untuk mengimport spreadsheet Excel.

Gunakan kod ini

require(readxl)

untuk memeriksa sama ada readxl dipasang di mesin anda. Sekiranya anda memasang r dengan r-conda-essential, perpustakaan sudah terpasang. Anda harus melihat di tetingkap arahan:

Pengeluaran:

Loading required package: readxl. 

Sekiranya pakej tidak keluar, anda boleh memasangnya dengan konda perpustakaan atau di terminal, gunakan conda install -c mittner r-readxl.

Gunakan perintah berikut untuk memuatkan perpustakaan untuk mengimport fail excel.

library(readxl)

readxl_contoh ()

Kami menggunakan contoh yang termasuk dalam pakej readxl semasa tutorial ini.

Gunakan kod

readxl_example()

untuk melihat semua hamparan yang ada di perpustakaan.

Untuk memeriksa lokasi hamparan bernama clippy.xls, gunakan mudah

readxl_example('geometry.xls')

Sekiranya anda memasang R dengan konda, spreadsheet terletak di Anaconda3 / lib / R / library / readxl / extdata / filename.xls

baca_excel ()

Fungsi read_excel () sangat berguna ketika membuka xls dan xlsx extention.

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 boleh mengimport hamparan dari pustaka readxl dan mengira bilangan lajur di helaian 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)

Pengeluaran:

## [1] 5

excel_sheets ()

Datasets.xlsx fail terdiri daripada 4 helaian. Kita dapat mengetahui lembaran mana yang ada di buku kerja dengan menggunakan fungsi excel_sheets ()

example <- readxl_example('datasets.xlsx') 

excel_sheets(example)

Pengeluaran:

[1] 'iris' 'mtcars' 'chickwts' 'quakes'

Sekiranya lembaran kerja merangkumi banyak helaian, mudah untuk memilih helaian tertentu dengan menggunakan argumen lembaran. Kita dapat menentukan nama helaian atau indeks helaian. Kami dapat mengesahkan sama ada kedua fungsi mengembalikan output 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) 

Pengeluaran:

## [1] TRUE

Kita dapat mengawal sel yang hendak dibaca dengan 2 cara

  1. Gunakan argumen n_max untuk mengembalikan n baris
  2. Gunakan argumen julat yang digabungkan dengan baris_ sel atau sel_kol

Sebagai contoh, kami menetapkan n_max sama dengan 5 untuk mengimport lima baris pertama.

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

Sekiranya kita menukar nama col_ menjadi FALSE, R akan membuat tajuk secara automatik.

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

iris_no_header

Dalam kerangka data iris_no_header, R membuat lima pemboleh ubah baru bernama X__1, X__2, X__3, X__4 dan X__5

Kami juga dapat menggunakan julat argumen untuk memilih baris dan lajur di spreadsheet. Dalam kod di bawah ini, kami menggunakan gaya excel untuk memilih julat A1 hingga B5.

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

Pengeluaran:

## [1] 4 2

Kita dapat melihat bahawa contoh_1 mengembalikan 4 baris dengan 2 lajur. Set data mempunyai tajuk, sebab dimensi adalah 4x2.

Dalam contoh kedua, kami menggunakan fungsi cell_rows () yang mengawal julat baris untuk kembali. Sekiranya kita mahu mengimport baris 1 hingga 5, kita dapat menetapkan baris_ sel (1: 5). Perhatikan bahawa, baris_ sel (1: 5) mengembalikan output yang sama dengan baris_ sel (5: 1).

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

Pengeluaran:

## [1] 4 5

Contoh_2 bagaimanapun adalah matriks 4x5. Set data iris mempunyai 5 lajur dengan tajuk. Kami mengembalikan empat baris pertama dengan tajuk semua lajur

Sekiranya kita mahu mengimport baris yang tidak bermula pada baris pertama, kita harus memasukkan col_names = FALSE. Sekiranya kita menggunakan range = cell_rows (2: 5), menjadi jelas bahawa kerangka data kita tidak lagi mempunyai tajuk.

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)

We can select the columns with the letter, like in Excel. # Select columns A and B col <-read_excel(example, range =cell_cols('A:B')) dim(col)

Pengeluaran:

## [1] 150 2 

Catatan: range = cell_cols ('A: B'), mengembalikan output semua sel dengan nilai bukan nol. Set data mengandungi 150 baris, oleh itu, read_excel () mengembalikan baris hingga 150. Ini disahkan dengan fungsi redup ().

read_excel () mengembalikan NA apabila simbol tanpa nilai berangka muncul di sel. Kita dapat menghitung jumlah nilai yang hilang dengan gabungan dua fungsi

  1. jumlah
  2. adalah.na

Inilah kod

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

Pengeluaran:

## [1] 50

Kami mempunyai 50 nilai yang hilang, yang merupakan baris dari spesies setosa.

Import data dari perisian Statistik lain

Kami akan mengimport format fail yang berbeza dengan pakej surga. Pakej ini menyokong perisian SAS, STATA dan SPSS. Kita dapat menggunakan fungsi berikut untuk membuka berbagai jenis set data, sesuai dengan peluasan fail:

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

Hanya satu argumen diperlukan dalam fungsi ini. Kita perlu mengetahui PATH di mana fail disimpan. Itu sahaja, kami bersedia untuk membuka semua fail dari SAS, STATA dan SPSS. Ketiga fungsi ini juga menerima URL.

library(haven)

haven dilengkapi dengan konda r-penting jika tidak pergi ke pautan atau di terminal conda install -c conda-forge r-haven

Baca sas

Sebagai contoh, kami akan menggunakan set data kemasukan dari IDRE.

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

Pengeluaran:

 ## # A tibble: 6 x 4 ## ADMIT GRE GPA RANK ## ## 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 

Baca STATUS

Untuk fail data STATA anda boleh menggunakan read_dta (). Kami menggunakan set data yang sama tetapi menyimpan dalam fail .dta.

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

Pengeluaran:

 ## # A tibble: 6 x 4 ## admit gre gpa rank ## ## 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 

Baca SPSS

Kami menggunakan fungsi read_sav () untuk membuka fail SPSS. Sambungan fail '.sav'

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

Pengeluaran:

## # A tibble: 6 x 4 ## admit gre gpa rank ## ## 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 

Amalan terbaik untuk Import Data

Apabila kita ingin mengimport data ke R, ada baiknya menerapkan senarai semak berikut. Ini akan memudahkan untuk mengimport data dengan betul ke R:

  • Format khas untuk spreadsheet adalah menggunakan baris pertama sebagai tajuk (biasanya nama pemboleh ubah).
  • Elakkan menamakan set data dengan ruang kosong; ia boleh membawa kepada penafsiran sebagai pemboleh ubah yang berasingan. Sebagai alternatif, lebih suka menggunakan '_' atau '-.'
  • Nama pendek lebih disukai
  • Jangan masukkan simbol dalam nama: i.e. exchange_rate _ $ _ € tidak betul. Lebih suka menamakannya: exchange_rate_dollar_euro
  • Gunakan NA untuk nilai yang hilang sebaliknya; kita perlu membersihkan formatnya kemudian.

Ringkasan

Jadual berikut merangkum fungsi yang akan digunakan untuk mengimport pelbagai jenis fail di R. Lajur satu menyatakan perpustakaan yang berkaitan dengan fungsi. Lajur terakhir merujuk kepada argumen lalai.

Perpustakaan

Objektif

Fungsi

Hujah Lalai

perkakas

Baca fail CSV

baca.csv ()

fail, tajuk =, BENAR, sep = ','

bacaxl

Baca fail EXCEL

baca_excel ()

jalan, julat = NULL, col_names = BENAR

surga

Baca fail SAS

baca_sas ()

jalan

surga

Baca fail STATA

baca_stata ()

jalan

surga

Baca fail SPSS

baca_sav ()

jalan

Jadual berikut menunjukkan cara yang berbeza untuk mengimport pilihan dengan fungsi read_excel ().

Fungsi

Objektif

Hujah

baca_excel ()

Baca n bilangan baris

n_max = 10


Pilih baris dan lajur seperti di excel

julat = 'A1: D10'


Pilih baris dengan indeks

julat = baris_ sel (1: 3)


Pilih lajur dengan huruf

julat = sel_kol ('A: C')