Импортируйте данные в R: читайте файлы CSV, Excel, SPSS, Stata, SAS.

Данные могут существовать в различных форматах. Для каждого формата R имеет определенную функцию и аргумент. В этом руководстве объясняется, как импортировать данные в R.

Чтение CSV

Одним из наиболее распространенных хранилищ данных является формат файлов .csv (значения, разделенные запятыми). R при запуске загружает массив библиотек, включая пакет utils. Этот пакет удобен для открытия файлов csv в сочетании с функцией read.csv(). Вот синтаксис read.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 по умолчанию возвращает значения символов в виде коэффициента. Мы можем отключить этот параметр, добавив 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

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"

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

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. Используйте аргумент диапазона в сочетании с cell_rows или cell_cols.

Например, мы установили 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

Однако example_2 представляет собой матрицу 4×5. Набор данных радужной оболочки глаза имеет 5 столбцов с заголовком. Мы возвращаем первые четыре строки с заголовками всех столбцов.

Excel_Sheets

Если мы хотим импортировать строки, которые не начинаются с первой строки, нам необходимо включить 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_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

Примечание. range = cell_cols («A: B») возвращает все ячейки с ненулевым значением. Набор данных содержит 150 строк, поэтому read_excel() возвращает строки до 150. Это проверяется с помощью функции dim().

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

  1. сумма
  2. есть.на

Вот код

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

Результат

## [1] 50

У нас отсутствует 50 значений, которые являются строками, принадлежащими виду Setosa.

Импортируйте данные из другого статистического программного обеспечения.

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

  • САС: read_sas()
  • STATA: read_dta() (или read_stata(), которые идентичны)
  • SPSS: read_sav() или read_por(). Нам нужно проверить расширение

В этой функции требуется только один аргумент. Нам нужно знать PATH, в котором хранится файл. Все, мы готовы открыть все файлы из SAS, STATA и SPSS. Эти три функции также принимают URL-адрес.

library(haven)

Haven поставляется с Conda R-Essential, в противном случае перейдите к ссылке. или в терминале conda install -c conda-forge r-haven

Читать САС

В нашем примере мы собираемся использовать набор данных о приеме из 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 вы можете использовать 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_$_€» неверно. Предпочитаю называть его: Exchange_rate_dollar_euro.
  • В противном случае используйте NA для отсутствующих значений; нам нужно будет очистить формат позже.

Итого

В следующей таблице приведены функции, которые следует использовать для импорта файлов различных типов в R. В первом столбце указана библиотека, связанная с этой функцией. Последний столбец относится к аргументу по умолчанию.

Библиотека Цель Функция Аргументы по умолчанию
Utils Чтение CSV-файла read.csv () файл, заголовок =, ИСТИНА, сентябрь = «»,
читатьxl Чтение файла EXCEL read_excel () путь, диапазон = NULL, имена столбцов = TRUE
убежище Чтение файла SAS read_sas() путь
убежище Чтение файла STATA read_stata() путь
убежище Чтение файла SPSS read_sav() путь

В следующей таблице показаны различные способы импорта выделения с помощью функции read_excel().

Функция Цель аргументы
read_excel () Прочитайте n количество строк п_макс = 10
Выделяйте строки и столбцы, как в Excel. диапазон = «A1:D10»
Выбрать строки с индексами диапазон = ячейки_строки (1:3)
Выбрать столбцы с буквами диапазон = cell_cols («A: C»)