Gegevens importeren in R: lees CSV-, Excel-, SPSS-, Stata-, SAS-bestanden

Inhoudsopgave:

Anonim

Gegevens kunnen in verschillende formaten voorkomen. Voor elk formaat heeft R een specifieke functie en argument. In deze tutorial wordt uitgelegd hoe u gegevens in R.

In deze tutorial leer je

  • Lees CSV
  • Lees Excel-bestanden
  • readxl_example ()
  • read_excel ()
  • excel_sheets ()
  • Importeer gegevens uit andere statistische software
  • Lees sas
  • Lees STATA
  • Lees SPSS
  • Praktische tips voor het importeren van gegevens

Lees CSV

Een van de meest gebruikte gegevensopslag zijn de .csv-bestandsindelingen (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 :

  • bestand : PATH waar het bestand is opgeslagen
  • header : bevestig of het bestand een header heeft of niet, standaard is de header ingesteld op TRUE
  • sep : het symbool dat wordt gebruikt om de variabele te splitsen. Standaard is `,`.

We lezen de naam van het gegevensbestand mtcats. Het csv-bestand wordt online opgeslagen. Als uw .csv-bestand lokaal is opgeslagen, kunt u het PATH in het codefragment vervangen. Vergeet het niet in te pakken ''. Het PATH moet een tekenreekswaarde zijn.

Voor Mac-gebruikers is het pad voor de downloadmap:

 "/Users/USERNAME/Downloads/FILENAME.csv"

Voor Windows-gebruiker:

"C:\Users\USERNAME\Downloads\FILENAME.csv"

Merk op dat we altijd de extensie van de bestandsnaam moeten specificeren.

  • .csv
  • .xlsx
  • .tekst
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.

Lees Excel-bestanden

Excel-bestanden zijn erg populair bij 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 met r-conda-essential installeert, is de bibliotheek al geïnstalleerd. U zou in het opdrachtvenster moeten zien:

Uitgang:

Loading required package: readxl. 

Als het pakket niet wordt afgesloten, kunt u het installeren met de conda-bibliotheek of in de terminal, gebruik conda install -c mittner r-readxl.

Gebruik de volgende opdracht om de bibliotheek te laden om Excel-bestanden te importeren.

library(readxl)

readxl_example ()

We gebruiken de voorbeelden die in het pakket readxl zijn opgenomen tijdens deze tutorial.

Gebruik code

readxl_example()

om alle beschikbare spreadsheets in de bibliotheek te zien.

Gebruik eenvoudig om de locatie van de spreadsheet met de naam clippy.xls te controleren

readxl_example("geometry.xls")

Als je R met conda installeert, bevinden de spreadsheets zich in Anaconda3 / lib / R / library / readxl / extdata / filename.xls

read_excel ()

De functie read_excel () is van groot nut als het gaat om het openen van xls en xlsx extentie.

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 spreadsheetdf <- read_excel(example)# Count the number of columnslength(df)

Uitgang:

## [1] 5

excel_sheets ()

Het bestand datasets.xlsx is samengesteld uit 4 bladen. We kunnen uitzoeken 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, is het gemakkelijk om een ​​bepaald blad te selecteren met behulp van de bladargumenten. We kunnen de naam van het blad of de bladindex specificeren. We kunnen controleren 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 in combinatie 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 headeriris <-read_excel(example, n_max =5, col_names =TRUE)

Als we col_names veranderen in FALSE, maakt R de headers automatisch aan.

# Read the first five row: without headeriris_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 ook het argumentbereik gebruiken om rijen en kolommen in de spreadsheet te selecteren. In de onderstaande code gebruiken we de Excel-stijl om het bereik A1 tot B5 te selecteren.

# Read rows A1 to B5example_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 koptekst, dat de reden dat de dimensie 4x2 is.

In het tweede voorbeeld gebruiken we de functie cell_rows () die het bereik van rijen bepaalt dat moet worden geretourneerd. Als we de rijen 1 tot 5 willen importeren, kunnen we cell_rows (1: 5) instellen. Merk op dat cell_rows (1: 5) dezelfde uitvoer retourneert als cell_rows (5: 1).

# Read rows 1 to 5example_2 <-read_excel(example, range =cell_rows(1:5),col_names =TRUE)dim(example_2)

Uitgang:

## [1] 4 5

Het voorbeeld_2 is echter een 4x5-matrix. De iris-dataset heeft 5 kolommen met koptekst. We retourneren de eerste vier rijen met de koptekst van alle kolommen

Als we rijen willen importeren die niet op 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 Bcol <-read_excel(example, range =cell_cols("A:B"))dim(col)

Uitgang:

## [1] 150 2 

Opmerking: bereik = cell_cols ("A: B"), retourneert uitvoer alle cellen met een niet-nulwaarde. De dataset bevat 150 rijen, daarom geeft read_excel () rijen tot 150 terug. Dit wordt geverifieerd met de functie dim ().

read_excel () geeft NA terug als 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 soorten datasets te openen, afhankelijk van de extensie van het bestand:

  • SAS: read_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 PAD kennen 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 komt met conda r-essential, anders ga je 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##    ## 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 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##    ## 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 SPSS

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##    ## 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

Praktische tips voor het importeren van gegevens

Als we gegevens in R willen importeren, is het handig om de volgende checklist te implementeren. Het maakt het gemakkelijk om gegevens correct in R te importeren:

  • De typische indeling voor een spreadsheet is om de eerste rijen als koptekst te gebruiken (meestal de naam van de variabelen).
  • Vermijd om een ​​dataset een naam te geven met spaties; het kan leiden tot interpretatie als een aparte variabele. U kunt ook liever '_' of '-' gebruiken.
  • Korte namen hebben de voorkeur
  • Gebruik geen symbool in de naam: dat wil zeggen: exchange_rate _ $ _ € is niet correct. Geef het liever een naam: exchange_rate_dollar_euro
  • Gebruik anders NA voor ontbrekende waarden; we moeten het formaat later opschonen.

Overzicht

De volgende tabel geeft een overzicht van de functie die moet worden gebruikt om verschillende soorten bestanden in R te importeren. In de eerste kolom staat de bibliotheek die aan de functie is gerelateerd. De laatste kolom verwijst naar het standaardargument.

Bibliotheek

Objectief

Functie

Standaardargumenten

utils

Lees CSV-bestand

lees.csv ()

bestand, header =, TRUE, sep = ","

readxl

Lees het EXCEL-bestand

read_excel ()

pad, bereik = NULL, kolomnamen = WAAR

oase

Lees het SAS-bestand

read_sas ()

pad

oase

Lees STATA-bestand

read_stata ()

pad

oase

Lees SPSS-bestand

read_sav ()

pad

De volgende tabel toont de verschillende manieren om een ​​selectie te importeren met de functie read_excel ().

Functie

Doelstellingen

Argumenten

read_excel ()

Lees n aantal rijen

n_max = 10

Selecteer rijen en kolommen zoals in Excel

range = "A1: D10"

Selecteer rijen met indexen

bereik = cell_rows (1: 3)

Selecteer kolommen met letters

range = cell_cols ("A: C")