Імпорт даних у R: читання файлів CSV, Excel, SPSS, Stata, SAS

Дані можуть існувати в різних форматах. Для кожного формату R має певну функцію та аргумент. У цьому посібнику пояснюється, як імпортувати дані в R.

Прочитати CSV

Одним із найпоширеніших сховищ даних є формати файлів .csv (значення, розділені комами). R завантажує масив бібліотек під час запуску, включаючи пакет utils. Цей пакет зручний для відкриття файлів csv у поєднанні з функцією reading.csv(). Ось синтаксис для read.csv

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

аргументація:

  • файл: ШЛЯХ, де зберігається файл
  • заголовок: перевірте, чи має файл заголовок чи ні, за замовчуванням для заголовка встановлено значення TRUE
  • Вересень: символ, який використовується для поділу змінної. За замовчуванням `,`.

Ми прочитаємо назву файлу даних mtcats. Файл CSV зберігається в Інтернеті. Якщо ваш файл .csv зберігається локально, ви можете замінити ШЛЯХ у фрагменті коду. Не забудьте загорнути його всередину " ". PATH має бути рядковим значенням.

Для користувачів Mac шлях до папки для завантажень:

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

Для користувачів Windows:

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

Зауважте, що ми завжди повинні вказувати розширення імені файлу.

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

Вихід

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

Вихід

## [1] "factor"

R за замовчуванням повертає символьні значення як Фактор. Ми можемо вимкнути цей параметр, додавши stringsAsFactors = FALSE.

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

Вихід

## [1] "character"

Клас для змінної X тепер є символом.

Читайте файли Excel

перевершувати файли дуже популярні серед аналітиків даних. Електронні таблиці прості в роботі та гнучкі. R оснащено бібліотекою readxl для імпорту електронної таблиці Excel.

Використовуйте цей код

require(readxl)

щоб перевірити, чи на вашій машині встановлено readxl. Якщо ви інсталюєте r за допомогою r-conda-essential, бібліотеку вже встановлено. Ви повинні побачити у вікні команди:

Вихід

Loading required package: readxl.

Якщо пакет не завершується, ви можете встановити його за допомогою conda бібліотека або в терміналі скористайтеся conda install -c mittner r-readxl.

Використовуйте наступну команду, щоб завантажити бібліотеку для імпорту файлів Excel.

library(readxl)

readxl_example()

У цьому посібнику ми використовуємо приклади, включені в пакет readxl.

Використовуйте код

readxl_example()

щоб переглянути всі доступні електронні таблиці в бібліотеці.

Readxl_Example

Щоб перевірити розташування електронної таблиці під назвою clippy.xls, просто скористайтеся

readxl_example("geometry.xls")

Readxl_Example

Якщо ви інсталюєте R з conda, електронні таблиці розташовані в Anaconda3/lib/R/library/readxl/extdata/filename.xls

read_excel()

Функція read_excel() дуже корисна, коли йдеться про відкриття розширень xls і xlsx.

Синтаксис:

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

Ми можемо імпортувати електронні таблиці з бібліотеки readxl і підрахувати кількість стовпців на першому аркуші.

# 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)

Вихід

## [1] 5

excel_sheets()

Файл datasets.xlsx складається з 4 аркушів. Ми можемо дізнатися, які аркуші доступні в книзі, використовуючи функцію excel_sheets().

example <- readxl_example("datasets.xlsx")

excel_sheets(example)

Вихід

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

Якщо аркуш містить багато аркушів, можна легко вибрати певний аркуш за допомогою аргументів аркуша. Ми можемо вказати назву аркуша або індекс аркуша. Ми можемо перевірити, чи обидві функції повертають однаковий результат за допомогою identical().

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

Вихід

## [1] TRUE

Ми можемо контролювати, які клітинки читати двома способами

  1. Використовуйте аргумент n_max, щоб повернути n рядків
  2. Використовуйте аргумент діапазону в поєднанні з клітинками рядки або клітинки стовпці

Наприклад, ми встановлюємо n_max рівним 5, щоб імпортувати перші п’ять рядків.

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

Excel_Sheets

Якщо ми змінюємо col_names на FALSE, R створює заголовки автоматично.

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

iris_no_header

У кадрі даних iris_no_header R створив п’ять нових змінних з іменами X__1, X__2, X__3, X__4 і X__5

Excel_Sheets

Ми також можемо використовувати діапазон аргументів для вибору рядків і стовпців в електронній таблиці. У наведеному нижче коді ми використовуємо стиль Excel, щоб вибрати діапазон від A1 до B5.

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

Вихід

## [1] 4 2

Ми бачимо, що example_1 повертає 4 рядки з 2 стовпцями. Набір даних має заголовок, тому розмір має 4×2.

Excel_Sheets

У другому прикладі ми використовуємо функцію cell_rows(), яка керує діапазоном рядків для повернення. Якщо ми хочемо імпортувати рядки з 1 по 5, ми можемо встановити cell_rows(1:5). Зауважте, що cell_rows(1:5) повертає той самий результат, що й 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)

Вихід

## [1] 4 5

Однак приклад_2 є матрицею 4×5. Набір даних райдужної оболонки має 5 стовпців із заголовком. Ми повертаємо перші чотири рядки із заголовками всіх стовпців

Excel_Sheets

Якщо ми хочемо імпортувати рядки, які не починаються з першого рядка, ми повинні включити col_names = FALSE. Якщо ми використовуємо діапазон = cell_rows(2:5), стає очевидним, що наш кадр даних більше не має заголовка.

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_Sheets

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)

Вихід

## [1] 150   2

Примітка: діапазон = cell_cols(“A:B”), повертає всі клітинки з ненульовим значенням. Набір даних містить 150 рядків, тому read_excel() повертає рядки до 150. Це перевіряється за допомогою функції dim().

read_excel() повертає NA, коли в клітинці з’являється символ без числового значення. Ми можемо підрахувати кількість пропущених значень за допомогою комбінації двох функцій

  1. сума
  2. is.na

Ось код

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

Вихід

## [1] 50

У нас бракує 50 значень, які є рядками, що належать виду setosa.

Імпорт даних з іншого статистичного програмного забезпечення

Ми будемо імпортувати різні формати файлів із пакетом heaven. Цей пакет підтримки ПАР, STATA та програмне забезпечення SPSS. Ми можемо використовувати таку функцію, щоб відкрити різні типи набору даних відповідно до розширення файлу:

  • SAS: read_sas()
  • STATA: read_dta() (або read_stata(), які ідентичні)
  • SPSS: read_sav() або read_por(). Нам потрібно перевірити розширення

У цій функції потрібен лише один аргумент. Нам потрібно знати ШЛЯХ, де зберігається файл. Ось і все, ми готові відкрити всі файли з SAS, STATA і SPSS. Ці три функції також приймають URL-адресу.

library(haven)

haven поставляється з conda r-essential, інакше перейдіть до link або в терміналі conda install -c conda-forge r-haven

Прочитайте sas

Для нашого прикладу ми збираємося використовувати набір даних про прийом із IDRE.

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

Вихід

## # 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

Читайте STATA

Для файлів даних STATA ви можете використовувати read_dta(). Ми використовуємо той самий набір даних, але зберігаємо його у файлі .dta.

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

Вихід

## # 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

Читайте SPSS

Ми використовуємо функцію read_sav(), щоб відкрити файл SPSS. Розширення файлу «.sav»

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

Вихід

## # 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

Практичні поради щодо імпорту даних

Коли ми хочемо імпортувати дані в R, корисно реалізувати наступний контрольний список. Це полегшить правильний імпорт даних у R:

  • Типовим форматом для електронної таблиці є використання перших рядків як заголовка (зазвичай імена змінних).
  • Уникайте назви набору даних із пробілами; це може призвести до інтерпретації як окремої змінної. Крім того, краще використовувати «_» або «-».
  • Перевага надається коротким назвам
  • Не включайте символ у назву: наприклад: обмінний_курс_$_€ неправильний. Назвіть це так: exchange_rate_dollar_euro
  • В іншому випадку використовуйте NA для відсутніх значень; нам потрібно очистити формат пізніше.

Підсумки

У наступній таблиці підсумовано функції, які слід використовувати для імпорту різних типів файлів у R. Перший стовпець містить бібліотеку, пов’язану з функцією. Останній стовпець посилається на аргумент за замовчуванням.

Library мета функція Аргументи за замовчуванням
утиліти Прочитати файл CSV read.csv() файл, заголовок =, TRUE, sep = ","
readxl Прочитайте файл EXCEL read_excel() шлях, діапазон = NULL, імена_стовпців = TRUE
притулок Прочитати файл SAS read_sas() шлях
притулок Прочитайте файл STATA read_stata() шлях
притулок Прочитайте заповнення SPSS read_sav() шлях

У наступній таблиці показано різні способи імпорту виділення за допомогою функції read_excel().

функція мета Аргументи
read_excel() Прочитайте n рядків n_max = 10
Виділіть рядки та стовпці, як у Excel діапазон = “A1:D10”
Виділіть рядки з індексами діапазон= клітинка_рядки(1:3)
Виберіть колонки з літерами діапазон = cell_cols("A:C")