Импортируйте данные в 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()
чтобы просмотреть все доступные таблицы в библиотеке.
Чтобы проверить расположение электронной таблицы с именем 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"
Если рабочий лист включает в себя много листов, можно легко выбрать конкретный лист, используя аргументы листа. Мы можем указать имя листа или индекс листа. Мы можем проверить, возвращают ли обе функции один и тот же результат с помощью идентичных().
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 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
Однако example_2 представляет собой матрицу 4×5. Набор данных радужной оболочки глаза имеет 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)
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, когда в ячейке появляется символ без числового значения. Мы можем подсчитать количество пропущенных значений с помощью комбинации двух функций
- сумма
- есть.на
Вот код
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») |