Импортиране на данни в 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 вътре в кодовия фрагмент. Не забравяйте да го увиете вътре в „ “. 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 файлове
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
Можем да контролираме кои клетки да четем по 2 начина
- Използвайте аргумент 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
Примерът_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, когато в клетката се появи символ без числова стойност. Можем да преброим броя на липсващите стойности с комбинацията от две функции
- сума
- е.на
Ето кода
iris_na <-read_excel(example, na ="setosa") sum(is.na(iris_na))
Продукция
## [1] 50
Имаме липсващи 50 стойности, които са редовете, принадлежащи на вида setosa.
Импортирайте данни от друг статистически софтуер
Ние ще импортираме различни файлови формати с пакета Heaven. Този пакет поддържа SAS, STATA и SPSS софтуери. Можем да използваме следната функция, за да отворим различни типове набор от данни, според разширението на файла:
- SAS: read_sas()
- STATA: read_dta() (или read_stata(), които са идентични)
- SPSS: read_sav() или read_por(). Трябва да проверим разширението
В рамките на тази функция се изисква само един аргумент. Трябва да знаем ПЪТЯ, където се съхранява файлът. Това е всичко, готови сме да отворим всички файлове от SAS, STATA и SPSS. Тези три функции приемат и URL.
library(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
Най-добри практики за импортиране на данни
Когато искаме да импортираме данни в R, е полезно да приложим следния контролен списък. Това ще улесни правилното импортиране на данни в R:
- Типичният формат за електронна таблица е да се използват първите редове като заглавка (обикновено име на променлива).
- Избягвайте да наименувате набор от данни с празни интервали; може да доведе до тълкуване като отделна променлива. Друга възможност е да използвате '_' или '-.'
- За предпочитане са кратките имена
- Не включвайте символ в името: т.е. обменен_курс_$_€ не е правилен. Предпочитайте да го наименувате: exchange_rate_dollar_euro
- Използвайте NA за липсващи стойности в противен случай; трябва да изчистим формата по-късно.
Oбобщение
Следващата таблица обобщава функцията, която да използвате, за да импортирате различни типове файлове в R. Първата колона посочва библиотеката, свързана с функцията. Последната колона се отнася до аргумента по подразбиране.
| Библиотека | Цел | функция | Аргументи по подразбиране |
|---|---|---|---|
| UTILS | Прочетете CSV файл | read.csv() | файл, заглавка =, TRUE, sep = "," |
| readxl | Прочетете EXCEL файл | read_excel() | път, диапазон = NULL, имена на_колони = TRUE |
| убежище | Прочетете SAS файла | read_sas() | път |
| убежище | Прочетете STATA файла | read_stata() | път |
| убежище | Прочетете SPSS file | read_sav() | път |
Следната таблица показва различните начини за импортиране на селекция с функцията read_excel().
| функция | Цел | Аргументи |
|---|---|---|
| read_excel() | Прочетете n на брой редове | n_max = 10 |
| Изберете редове и колони като в Excel | диапазон = „A1:D10“ | |
| Изберете редове с индекси | диапазон=клетки_редове(1:3) | |
| Изберете колони с букви | диапазон = cell_cols(“A:C”) |







