Gegevens importeren in R: CSV-, Excel-, SPSS-, Stata- en SAS-bestanden lezen
Gegevens kunnen in verschillende formaten voorkomen. Voor elk formaat R heeft een specifieke functie en argument. In deze tutorial wordt uitgelegd hoe u gegevens importeert naar R.
CSV lezen
Een van de meest voorkomende gegevensopslagplaatsen zijn de bestandsformaten .csv (door komma's gescheiden waarden). R laadt een reeks bibliotheken tijdens het opstarten, inclusief het utils-pakket. Dit pakket is handig om csv-bestanden te openen in combinatie met de functie reading.csv(). Hier is de syntaxis voor read.csv
read.csv(file, header = TRUE, sep = ",")
Argument:
- filet: PATH waar het bestand is opgeslagen
- hoofd: bevestig of het bestand een header heeft of niet. De header is standaard ingesteld op TRUE
- september: het symbool dat wordt gebruikt om de variabele te splitsen. Standaard `,`.
We zullen de gegevensbestandsnaam mtcats lezen. Het csv-bestand wordt online opgeslagen. Als uw .csv-bestand lokaal is opgeslagen, kunt u het PATH in het codefragment vervangen. Vergeet niet om het in ' ' te wikkelen. Het PATH moet een tekenreekswaarde zijn.
Voor Mac-gebruikers is het pad voor de downloadmap:
"/Users/USERNAME/Downloads/FILENAME.csv"
Voor Windows-gebruikers:
"C:\Users\USERNAME\Downloads\FILENAME.csv"
Houd er rekening mee dat we altijd de extensie van de bestandsnaam moeten opgeven.
- . Csv
- . Xlsx
- . Txt
- ...
PATH <- 'https://raw.githubusercontent.com/guru99-edu/R-Programming/master/mtcars.csv' df <- read.csv(PATH, header = TRUE, sep = ',') length(df)
uitgang
## [1] 12
class(df$X)
uitgang
## [1] "factor"
R retourneert standaard tekenwaarden als Factor. We kunnen deze instelling uitschakelen door stringsAsFactors = FALSE toe te voegen.
PATH <- 'https://raw.githubusercontent.com/guru99-edu/R-Programming/master/mtcars.csv' df <-read.csv(PATH, header =TRUE, sep = ',', stringsAsFactors =FALSE) class(df$X)
uitgang
## [1] "character"
De klasse voor de variabele X is nu een teken.
Excel-bestanden lezen
Excel bestanden zijn erg populair onder data-analisten. Spreadsheets zijn gemakkelijk om mee te werken en flexibel. R is uitgerust met een bibliotheek readxl om Excel-spreadsheet te importeren.
Gebruik deze code
require(readxl)
om te controleren of readxl op uw machine is geïnstalleerd. Als u r installeert met r-conda-essential, is de bibliotheek al geïnstalleerd. Je zou in het opdrachtvenster het volgende moeten zien:
uitgang
Loading required package: readxl.
Als het pakket niet wordt afgesloten, kunt u het installeren met de conda bibliotheek of gebruik in de terminal conda install -c mittner r-readxl.
Gebruik de volgende opdracht om de bibliotheek te laden om Excel-bestanden te importeren.
library(readxl)
leesxl_voorbeeld()
Tijdens deze tutorial gebruiken we de voorbeelden uit het pakket readxl.
Gebruik code
readxl_example()
om alle beschikbare spreadsheets in de bibliotheek te bekijken.
Om de locatie van de spreadsheet met de naam clippy.xls te controleren, gebruikt u eenvoudig
readxl_example("geometry.xls")
Als u R met conda installeert, bevinden de spreadsheets zich in Anaconda3/lib/R/library/readxl/extdata/filename.xls
lees_excel()
De functie read_excel() is van groot nut als het gaat om het openen van xls- en xlsx-extensies.
De syntaxis is:
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
We kunnen de spreadsheets uit de readxl-bibliotheek importeren en het aantal kolommen in het eerste blad tellen.
# 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)
uitgang
## [1] 5
excel_sheets()
Het bestand datasets.xlsx bestaat uit 4 bladen. We kunnen erachter komen welke bladen beschikbaar zijn in de werkmap door de functie excel_sheets() te gebruiken
example <- readxl_example("datasets.xlsx")
excel_sheets(example)
uitgang
[1] "iris" "mtcars" "chickwts" "quakes"
Als een werkblad veel bladen bevat, kunt u eenvoudig een bepaald blad selecteren met behulp van de bladargumenten. We kunnen de naam van het blad of de bladindex opgeven. We kunnen verifiëren of beide functies dezelfde uitvoer retourneren met identiek().
example <- readxl_example("datasets.xlsx")
quake <- read_excel(example, sheet = "quakes")
quake_1 <-read_excel(example, sheet = 4)
identical(quake, quake_1)
uitgang
## [1] TRUE
We kunnen op twee manieren bepalen welke cellen moeten worden gelezen
- Gebruik het argument n_max om n rijen te retourneren
- Gebruik bereikargument gecombineerd met cell_rows of cell_cols
We stellen bijvoorbeeld n_max gelijk aan 5 om de eerste vijf rijen te importeren.
# Read the first five row: with header iris <-read_excel(example, n_max =5, col_names =TRUE)
Als we col_names wijzigen in FALSE, maakt R de headers automatisch aan.
# Read the first five row: without header iris_no_header <-read_excel(example, n_max =5, col_names =FALSE)
iris_no_header
In het dataframe iris_no_header heeft R vijf nieuwe variabelen gemaakt met de namen X__1, X__2, X__3, X__4 en X__5
We kunnen het argumentbereik ook gebruiken om rijen en kolommen in het werkblad te selecteren. In de onderstaande code gebruiken we de Excel-stijl om het bereik A1 tot B5 te selecteren.
# Read rows A1 to B5 example_1 <-read_excel(example, range = "A1:B5", col_names =TRUE) dim(example_1)
uitgang
## [1] 4 2
We kunnen zien dat voorbeeld_1 4 rijen met 2 kolommen retourneert. De dataset heeft een header, dat de reden is dat de dimensie 4×2 is.
In het tweede voorbeeld gebruiken we de functie cell_rows() die het bereik van de te retourneren rijen bepaalt. Als we de rijen 1 tot en met 5 willen importeren, kunnen we cell_rows(1:5) instellen. Houd er rekening mee dat cell_rows(1:5) dezelfde uitvoer retourneert als 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)
uitgang
## [1] 4 5
Voorbeeld_2 is echter een 4×5-matrix. De irisgegevensset heeft 5 kolommen met koptekst. We retourneren de eerste vier rijen met de koptekst van alle kolommen
Als we rijen willen importeren die niet bij de eerste rij beginnen, moeten we col_names = FALSE opnemen. Als we range = cell_rows(2:5) gebruiken, wordt het duidelijk dat ons dataframe geen header meer heeft.
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)
uitgang
## [1] 150 2
Opmerking: bereik = cell_cols(“A:B”), retourneert alle cellen met een niet-null-waarde. De dataset bevat 150 rijen, daarom retourneert read_excel() rijen tot 150. Dit wordt geverifieerd met de dim() functie.
read_excel() retourneert NA wanneer een symbool zonder numerieke waarde in de cel verschijnt. We kunnen het aantal ontbrekende waarden tellen met de combinatie van twee functies
- som
- is.na
Hier is de code
iris_na <-read_excel(example, na ="setosa") sum(is.na(iris_na))
uitgang
## [1] 50
Er ontbreken 50 waarden, dit zijn de rijen die tot de setosa-soort behoren.
Importeer gegevens uit andere statistische software
We zullen verschillende bestandsformaten importeren met het Heaven-pakket. Dit pakket ondersteunt SAS, STATA en SPSS software. We kunnen de volgende functie gebruiken om verschillende typen datasets te openen, afhankelijk van de extensie van het bestand:
- SAS: lees_sas()
- STATA: read_dta() (of read_stata(), die identiek zijn)
- SPSS: read_sav() of read_por(). We moeten de extensie controleren
Binnen deze functie is slechts één argument vereist. We moeten het PATH weten waar het bestand is opgeslagen. Dat is alles, we zijn klaar om alle bestanden van SAS, STATA en SPSS te openen. Deze drie functies accepteren ook een URL.
library(haven)
haven wordt geleverd met conda r-essential anders ga naar de link of in de terminal conda install -c conda-forge r-haven
Lees sas
Voor ons voorbeeld gaan we de toelatingsdataset van IDRE gebruiken.
PATH_sas <- 'https://github.com/guru99-edu/R-Programming/blob/master/binary.sas7bdat?raw=true' df <- read_sas(PATH_sas) head(df)
uitgang
## # 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
Lees STATA
Voor STATA-gegevensbestanden kunt u read_dta() gebruiken. We gebruiken exact dezelfde dataset, maar slaan deze op in een .dta-bestand.
PATH_stata <- 'https://github.com/guru99-edu/R-Programming/blob/master/binary.dta?raw=true' df <- read_dta(PATH_stata) head(df)
uitgang
## # 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 lezen
We gebruiken de functie read_sav() om een SPSS-bestand te openen. De bestandsextensie “.sav”
PATH_spss <- 'https://github.com/guru99-edu/R-Programming/blob/master/binary.sav?raw=true' df <- read_sav(PATH_spss) head(df)
uitgang
## # 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
Best practices voor het importeren van gegevens
Wanneer we data willen importeren in R, is het handig om de volgende checklist te implementeren. Het zal het makkelijk maken om data correct te importeren in R:
- Het typische formaat voor een spreadsheet is om de eerste rijen als koptekst te gebruiken (meestal de naam van de variabele).
- Vermijd het benoemen van een dataset met spaties; het kan leiden tot interpretatie als een afzonderlijke variabele. U kunt ook liever '_' of '-' gebruiken.
- Korte namen hebben de voorkeur
- Neem geen symbool op in de naam: dat wil zeggen: exchange_rate_$_€ is niet correct. Noem het liever: exchange_rate_dollar_euro
- Gebruik anders NA voor ontbrekende waarden; we moeten de opmaak later opschonen.
Samenvatting
De volgende tabel vat de functie samen die u moet gebruiken om verschillende typen bestanden in R te importeren. Kolom één vermeldt de bibliotheek die gerelateerd is aan de functie. De laatste kolom verwijst naar het standaardargument.
| Bibliotheek | Objectief | Functie | Standaardargumenten |
|---|---|---|---|
| utils | CSV-bestand lezen | lees.csv() | bestand, header =,TRUE, sep = “,” |
| leesxl | Excel-bestand lezen | lees_excel() | pad, bereik = NULL, col_names = TRUE |
| veilige haven | SAS-bestand lezen | lees_sas() | pad |
| veilige haven | STATA-bestand lezen | lees_stata() | pad |
| veilige haven | Lees SPSS fille | lees_sav() | pad |
De onderstaande tabel toont de verschillende manieren om een selectie te importeren met de functie read_excel().
| Functie | Objectief | argumenten |
|---|---|---|
| lees_excel() | Lees n aantal rijen | n_max = 10 |
| Selecteer rijen en kolommen zoals in Excel | bereik = “A1:D10” | |
| Selecteer rijen met indexen | bereik= celrijen(1:3) | |
| Selecteer kolommen met letters | bereik = cell_cols(“A:C”) |







