Імпорт даних у 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()
щоб переглянути всі доступні електронні таблиці в бібліотеці.
Щоб перевірити розташування електронної таблиці під назвою clippy.xls, просто скористайтеся
readxl_example("geometry.xls")
Якщо ви інсталюєте 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
Ми можемо контролювати, які клітинки читати двома способами
- Використовуйте аргумент n_max, щоб повернути n рядків
- Використовуйте аргумент діапазону в поєднанні з клітинками рядки або клітинки стовпці
Наприклад, ми встановлюємо n_max рівним 5, щоб імпортувати перші п’ять рядків.
# Read the first five row: with header iris <-read_excel(example, n_max =5, col_names =TRUE)
Якщо ми змінюємо 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, щоб вибрати діапазон від 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.
У другому прикладі ми використовуємо функцію 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 стовпців із заголовком. Ми повертаємо перші чотири рядки із заголовками всіх стовпців
Якщо ми хочемо імпортувати рядки, які не починаються з першого рядка, ми повинні включити 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)
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, коли в клітинці з’являється символ без числового значення. Ми можемо підрахувати кількість пропущених значень за допомогою комбінації двох функцій
- сума
- 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") |