Импортируйте данные в R: читайте файлы CSV, Excel, SPSS, Stata, SAS.
⚡ Умное резюме
В этом руководстве рассматривается импорт данных в R, включая чтение CSV-файлов с помощью функции read.csv(), рабочих книг Excel с помощью readxl и файлов SAS, STATA или SPSS с помощью haven. Также показано, как точно выбирать листы, строки и диапазоны ячеек при импорте.

Данные могут существовать в различных форматах. Для каждого формата R имеет определенную функцию и аргумент. В этом руководстве объясняется, как импортировать данные в R.
Чтение CSV-файлов
Наиболее распространенный формат данных — .csv, значения, разделенные запятыми. R загружает множество библиотек при запуске, включая пакет utils. Этот пакет предоставляет функцию read.csv(), стандартный способ открытия CSV-файла. Вот синтаксис:
read.csv(file, header = TRUE, sep = ",")
Аргумент:
- файл: ПУТЬ, в которой хранится файл.
- заголовок: подтвердите, есть ли у файла заголовок или нет. По умолчанию для заголовка установлено значение TRUE.
- сентябрь: символ, используемый для разделения переменной. По умолчанию `,`.
Мы прочитаем имя файла данных mtcats. CSV-файл хранится в Интернете. Если ваш файл .csv хранится локально, вы можете заменить PATH внутри фрагмента кода. Не забудьте обернуть его внутри ''. PATH должен быть строковым значением.
Для пользователя Mac путь к папке загрузки:
"/Users/USERNAME/Downloads/FILENAME.csv"
Для пользователя Windows:
"C:\Users\USERNAME\Downloads\FILENAME.csv"
Обратите внимание: мы всегда должны указывать расширение имени файла.
- . Csv
- . XLSX
- .текст
- ...
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 до 4.0.0 функция read.csv() преобразовывала каждый символьный столбец в фактор, поэтому в приведенном выше примере class(df$X) возвращает «factor». Вы можете отключить эту функцию, установив stringsAsFactors = FALSE.
⚠️ Примечание к версии: с R 4.0.0 По умолчанию 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 теперь является символом.
read.csv() или read_csv(): что лучше использовать?
Функция read.csv() входит в базовый пакет R и не требует дополнительных пакетов. Пакет readr добавляет функцию read_csv(), которая работает быстрее и принимает меньше решений от вашего имени.
| Критерии | read.csv() (utils) | read_csv() (readr) |
|---|---|---|
| Необходимый пакет | Ничто | читатель |
| Скорость обработки больших файлов | Помедленнее | В несколько раз быстрее |
| Returns | кадр данных | тиббл |
| Имена столбцов | Пробелы преобразованы в точки | Сохранено в точности так, как написано. |
| Определение типа | Тихий | Указано в спецификации столбца. |
library(readr) df <- read_csv(PATH) # For very large files, data.table::fread() is faster still library(data.table) df <- fread(PATH)
Используйте read.csv() для небольших файлов и скриптов, которые должны работать без дополнительных пакетов. Используйте read_csv(), когда файл большой или когда важно сохранить точные имена столбцов.
Чтение файлов Excel
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("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"
Если рабочий лист включает в себя много листов, можно легко выбрать конкретный лист, используя аргументы листа. Мы можем указать имя листа или индекс листа. Мы можем проверить, возвращают ли обе функции один и тот же результат с помощью идентичных().
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 строк
- Используйте аргумент диапазона в сочетании с cell_rows или cell_cols.
Например, мы установили 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 функция readxl сгенерировала пять имен-заполнителей. Более старые версии выдавали имена от X__1 до X__5, а текущие — от …1 до …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 столбца. Диапазон A1:B5 охватывает пять строк электронной таблицы, но первая используется в качестве заголовка, поэтому размерность составляет 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
В отличие от этого, example_2 имеет размер 4 на 5. Функция cell_rows(1:5) снова рассматривает первую строку как заголовок, поэтому возвращаются четыре строки данных по всем пяти столбцам.
Если мы хотим импортировать строки, которые не начинаются с первой строки, нам необходимо включить col_names = FALSE. Если мы используем range = 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:
# Select columns A and B col <- read_excel(example, range = cell_cols("A:B")) dim(col)
Выход:
## [1] 150 2
Примечание. range = cell_cols («A: B») возвращает все ячейки с ненулевым значением. Набор данных содержит 150 строк, поэтому read_excel() возвращает строки до 150. Это проверяется с помощью функции dim().
Аргумент `na` указывает функции `read_excel()`, какие значения следует считать отсутствующими. Подсчитайте их с помощью функций `sum()` и `is.na()`:
- сумма
- есть.на
Вот код
iris_na <-read_excel(example, na ="setosa") sum(is.na(iris_na))
Выход:
## [1] 50
У нас отсутствует 50 значений, которые являются строками, принадлежащими виду Setosa.
Импорт данных из других статистических программ
Файлы из других статистических пакетов импортируются вместе с... убежище пакет, который поддерживает ПАВSTATA и SPSS. Для открытия наборов данных различных типов в зависимости от расширения файла можно использовать следующую функцию:
- САС: read_sas()
- STATA: read_dta() (или read_stata(), которые идентичны)
- SPSS: read_sav() или read_por(). Нам нужно проверить расширение
Каждая из этих функций принимает только один аргумент — путь к файлу (PATH), и каждая из них принимает... URL так же легко, как и местная тропа.
library(haven)
Haven поставляется с Conda R-Essential, в противном случае перейдите к ссылка. или в терминале 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
лучшие практики импорта данных
Проверка по приведенному ниже контрольному списку перед импортом позволит сэкономить большую часть времени на последующей очистке:
- Типичный формат электронной таблицы — использование первых строк в качестве заголовка (обычно имени переменной).
- Избегайте пробелов в именах файлов или столбцов, поскольку они могут быть восприняты как разделитель столбцов. Вместо них используйте нижнее подчеркивание.
- Короткие имена предпочтительны.
- Не используйте символы в названии. Пишите exchange_rate_dollar_euro вместо exchange_rate_$_€.
- Пропущенные значения следует кодировать как NA, а не как пробелы, тире или контрольные числа, такие как -99, которые в противном случае пришлось бы удалять впоследствии.
Импорт данных в R: Справочник по функциям
В таблице ниже указаны функции импорта для каждого типа файлов, библиотека, которая их предоставляет, и аргументы по умолчанию:
| Библиотека | Цель | Функция | Аргументы по умолчанию |
|---|---|---|---|
| Utils | Чтение CSV-файла | read.csv () | файл, заголовок = TRUE, разделитель = "", |
| читатьxl | Чтение файла EXCEL | read_excel () | путь, диапазон = NULL, имена столбцов = TRUE |
| убежище | Чтение файла SAS | read_sas() | путь |
| убежище | Чтение файла STATA | read_dta() / read_stata() | путь |
| убежище | Прочитайте файл SPSS | read_sav() | путь |
Во второй таблице показаны способы импорта выделенной области с помощью функции read_excel():
| Функция | Цель | аргументы |
|---|---|---|
| read_excel () | Прочитайте n количество строк | п_макс = 10 |
| Выделяйте строки и столбцы, как в Excel. | диапазон = «A1:D10» | |
| Выбрать строки с индексами | диапазон = ячейки_строки (1:3) | |
| Выбрать столбцы с буквами | диапазон = cell_cols («A: C») |







