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.

Readxl_Voorbeeld

Om de locatie van de spreadsheet met de naam clippy.xls te controleren, gebruikt u eenvoudig

readxl_example("geometry.xls")

Readxl_Voorbeeld

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

  1. Gebruik het argument n_max om n rijen te retourneren
  2. 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)

Excel_Sheets

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

Excel_Sheets

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.

Excel_Sheets

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

Excel_Sheets

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)

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)

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

  1. som
  2. 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”)

Vat dit bericht samen met: