Tuo tiedot R:ssä: Lue CSV-, Excel-, SPSS-, Stata-, SAS-tiedostoja

⚡ Älykäs yhteenveto

Tietojen tuonti R:ssä käsittelee CSV-tiedostojen lukemista read.csv()-funktiolla, Excel-työkirjojen lukemista readxl-funktiolla ja SAS-, STATA- tai SPSS-tiedostojen lukemista Haven-funktiolla. Tämä ohje näyttää myös, miten taulukot, rivit ja solualueet valitaan tarkasti tuonnin yhteydessä.

  • 📄 CSV-tuonti: read.csv(file, header = TRUE, sep = “,”) lataa pilkulla erotetun tiedoston paikallisesta polusta tai URL.
  • ⚠️ Versiomuutos: R 4.0.0 -versiosta lähtien merkkisarakkeet pysyvät merkkisarakkeina, koska stringsAsFactors on nyt oletusarvoisesti FALSE.
  • 📗 Excel-tuonti: readxl:n read_excel() käsittelee sekä .xls- että .xlsx-tiedostot, ja excel_sheets() listaa kaikki laskentataulukot ensin.
  • 🎯 Tarkka valinta: n_max rajoittaa rivejä, range käyttää Excel-merkintätapaa ja cell_rows() tai cell_cols() käyttävät indeksejä ja kirjaimia.
  • 🔄 Muut ohjelmistot: haven tarjoaa read_sas()-, read_dta()- ja read_sav()-funktiot, joista jokainen tarvitsee vain polun tai URL.
  • 🧹 Puhdas syöte: Koodaa puuttuvat arvot muodossa NA ja vältä välilyöntejä tai symboleja sarakenimissä ennen tuontia.

Tuo tietoja R:ään

Dataa voi olla eri muodoissa. Jokaiselle formaatille R on erityinen funktio ja argumentti. Tämä opetusohjelma selittää, kuinka tietoja tuodaan R:hen.

Lue CSV-tiedostoja

Yleisimmin käytetty tiedostomuoto on .csv, pilkulla erotetut arvot. R lataa käynnistyksen aikana taulukon kirjastoja, mukaan lukien utils-paketin. Tämä paketti tarjoaa read.csv()-funktion, joka on CSV-tiedoston avaamisen vakiotapa. Tässä on syntaksi:

read.csv(file, header = TRUE, sep = ",")

Perustelu:

  • tiedosto: PATH, johon tiedosto on tallennettu
  • ylätunniste: vahvista, onko tiedostossa otsikko vai ei, oletusarvoisesti otsikko on TRUE
  • syyskuu: symboli, jota käytetään muuttujan jakamiseen. Oletuksena `,`.

Luemme datatiedoston nimen mtcats. Csv-tiedosto on tallennettu verkkoon. Jos .csv-tiedostosi on tallennettu paikallisesti, voit korvata koodinpätkän sisällä olevan PATH:n. Älä unohda kääriä sitä sisään. PATH:n on oltava merkkijonoarvo.

Mac-käyttäjälle latauskansion polku on:

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

Windows-käyttäjälle:

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

Huomaa, että meidän tulee aina määrittää tiedostonimen pääte.

  • . Csv
  • . Xlsx
  • . Txt
  • ...
PATH <- 'https://raw.githubusercontent.com/guru99-edu/R-Programming/master/mtcars.csv'                
df <- read.csv(PATH, header =  TRUE, sep = ',')
length(df)

lähtö:

## [1] 12
class(df$X)

lähtö:

## [1] "factor"

R-versioissa ennen versiota 4.0.0 read.csv() muunsi jokaisen merkkisarakkeen tekijäksi, minkä vuoksi class(df$X) palauttaa yllä olevan ”tekijän”. Voit kytkeä sen pois päältä asettamalla stringsAsFactors = FALSE.

⚠️ Versiohuomautus: koska R 4.0.0 Oletusarvo on stringsAsFactors = FALSE, joten merkkisarakkeet pysyvät merkkijonoina ja ensimmäinen esimerkki palauttaa nyt arvon ”merkki” modernissa asennuksessa. Argumentin välittäminen eksplisiittisesti alla olevan mukaisesti antaa saman tuloksen kaikissa versioissa ja on turvallisin tapa.

PATH <- 'https://raw.githubusercontent.com/guru99-edu/R-Programming/master/mtcars.csv'
df <-read.csv(PATH, header =TRUE, sep = ',', stringsAsFactors =FALSE)
class(df$X)

lähtö:

## [1] "character"

Muuttujan X luokka on nyt merkki.

read.csv() vs. read_csv(): Kumpaa kannattaa käyttää?

read.csv() toimitetaan R-pohjaisena eikä vaadi erillistä pakettia. Readr-paketti lisää read_csv()-funktion, joka on nopeampi ja tekee vähemmän päätöksiä puolestasi.

Kriteeri read.csv() (apuohjelmat) read_csv() (lukija)
Paketti tarvitaan Ei eristetty lukija
Nopeus suurilla tiedostoilla hitaampi Useita kertoja nopeampi
Palautukset data.frame tibble
Sarakkeiden nimet Välilyönnit muunnettu pisteiksi Säilytetty täsmälleen kirjoitetun mukaisesti
Tyypin tunnistus Hiljainen Raportoitu sarakemäärityksessä
library(readr)
df <- read_csv(PATH)

# For very large files, data.table::fread() is faster still
library(data.table)
df <- fread(PATH)

Käytä read.csv()-funktiota pienille tiedostoille ja skripteille, joiden on suoritettava ilman lisäpaketteja. Käytä read_csv()-funktiota, kun tiedosto on suuri tai kun sarakenimien tarkkojen tietojen säilyttäminen on tärkeää.

Lue Excel-tiedostoja

kunnostautua tiedostot ovat erittäin suosittuja data-analyytikkojen keskuudessa. Laskentataulukoita on helppo käsitellä ja ne ovat joustavia. R on varustettu kirjastolla readxl Excel-laskentataulukon tuontia varten.

Käytä tätä koodia

require(readxl)

tarkistaaksesi, onko readxl asennettuna koneellesi. Jos asennat r:n kanssa r-conda-essential, kirjasto on jo asennettu. Sinun pitäisi nähdä komentoikkunassa:

lähtö:

Loading required package: readxl.

Jos pakettia ei ole asennettu, voit asentaa sen conda-komennolla. kirjasto tai käytä päätteessä conda install -c mittner r-readxl.

Käytä seuraavaa komentoa ladataksesi kirjaston Excel-tiedostojen tuomiseksi.

library(readxl)

readxl_example()

Käytämme tämän opetusohjelman aikana readxl-pakettiin sisältyviä esimerkkejä.

Käytä koodia

readxl_example()

nähdäksesi kaikki kirjastossa olevat laskentataulukot.

Readxl_Example

Tarkistaaksesi tietyn laskentataulukon sijainnin, anna sen nimi:

readxl_example("geometry.xls")

Readxl_Example

Jos asennat R:n condan kanssa, laskentataulukot sijaitsevat osoitteessa Anaconda3/lib/R/library/readxl/extdata/filename.xls

lue_excel()

read_excel() avaa sekä .xls- että .xlsx-tiedostopäätteet ja valitsee oikean jäsentimen automaattisesti.

Syntaksi on:

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

Voimme tuoda laskentataulukot readxl-kirjastosta ja laskea ensimmäisen arkin sarakkeiden lukumäärän.

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

lähtö:

## [1] 5

excel_sheets()

Tiedosto datasets.xlsx koostuu 4 arkista. Voimme selvittää, mitkä taulukot ovat käytettävissä työkirjassa käyttämällä excel_sheets()-funktiota

example <- readxl_example("datasets.xlsx")

excel_sheets(example)

lähtö:

[1] "iris"     "mtcars"   "chickwts" "quakes"

Jos laskentataulukossa on useita arkkeja, on helppo valita tietty taulukko taulukkoargumenttien avulla. Voimme määrittää arkin nimen tai arkkihakemiston. Voimme tarkistaa, palauttavatko molemmat funktiot saman tulosteen identical()-funktiolla.

example <- readxl_example("datasets.xlsx")
quake <- read_excel(example, sheet = "quakes")
quake_1 <-read_excel(example, sheet = 4)
identical(quake, quake_1)

lähtö:

## [1] TRUE

Voimme hallita luettavia soluja kahdella tavalla

  1. Käytä n_max-argumenttia palauttaaksesi n riviä
  2. Käytä väliargumenttia yhdistettynä solu_rivit tai solu_sarakkeet

Esimerkiksi asetamme n_max-arvoksi 5 tuodaksemme ensimmäiset viisi riviä.

# Read the first five row: with header
iris <-read_excel(example, n_max =5, col_names =TRUE)

Excel_Sheets

Jos muutamme sarakkeen_nimet arvoksi FALSE, R luo otsikot automaattisesti.

# Read the first five row: without header
iris_no_header <-read_excel(example, n_max =5, col_names =FALSE)

iris_no_header

readxl loi iris_no_header-datakehyksessä viisi paikkamerkkinimeä. Vanhemmat versiot tuottivat nimet X__1 - X__5, kun taas nykyiset versiot tuottavat …1 - …5.

Excel_Sheets

Voimme myös käyttää argumenttialuetta valitaksesi rivejä ja sarakkeita laskentataulukosta. Alla olevassa koodissa käytämme excel-tyyliä valitaksemme alueen A1 - B5.

# Read rows A1 to B5
example_1 <-read_excel(example, range = "A1:B5", col_names =TRUE)
dim(example_1)

lähtö:

## [1] 4 2

example_1 palauttaa 4 riviä ja 2 saraketta. Väli A1:B5 kattaa viisi laskentataulukon riviä, mutta ensimmäinen rivi kuluu otsikkona, minkä vuoksi mitta on 4 x 2.

Excel_Sheets

Toisessa esimerkissä käytämme funktiota cell_rows(), joka ohjaa palautettavien rivien määrää. Jos haluamme tuoda rivit 1-5, voimme asettaa solun_rivit(1:5). Huomaa, että solu_rivit(1:5) palauttaa saman tulosteen kuin solu_rivit(5:1).

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

lähtö:

## [1] 4 5

example_2 on sitä vastoin 4 x 5. cell_rows(1:5) käsittelee jälleen ensimmäistä riviä otsikkona, joten palautetaan neljä datariviä kaikista viidestä sarakkeesta.

Excel_Sheets

Jos haluamme tuoda rivejä, jotka eivät ala ensimmäisellä rivillä, meidän on sisällytettävä sarakkeen_nimet = FALSE. Jos käytämme range = cell_rows(2:5), käy ilmi, että tietokehyksellämme ei ole enää otsikkoa.

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

Voit myös valita sarakkeita kirjaimen mukaan, aivan kuten Excelissä:

# Select columns A and B
col <- read_excel(example, range = cell_cols("A:B"))
dim(col)

lähtö:

## [1] 150   2

Huomautus: alue = solun_sarakkeet("A:B"), palauttaa tulosteen kaikki solut, joiden arvo ei ole nolla. Tietojoukko sisältää 150 riviä, joten read_excel() palauttaa rivejä enintään 150. Tämä varmistetaan dim()-funktiolla.

na-argumentti kertoo read_excel()-funktiolle, mitä arvoja puuttuvina käsitellään. Laske ne sum()- ja is.na()-funktioilla:

  1. summa
  2. is.na

Tässä on koodi

iris_na <-read_excel(example, na ="setosa")
sum(is.na(iris_na))

lähtö:

## [1] 50

Meiltä puuttuu 50 arvoa, jotka ovat setosalajeihin kuuluvia rivejä.

Tuo tietoja muista tilasto-ohjelmistoista

Tiedostot muista tilastopaketeista tuodaan satama paketti, joka tukee SAS, STATA ja SPSS. Voimme käyttää seuraavaa funktiota avataksemme erityyppisiä tietojoukkoja tiedostopäätteen mukaan:

  • SAS: read_sas()
  • TILA: read_dta() (tai read_stata(), jotka ovat identtisiä)
  • SPSS: read_sav() tai read_por(). Meidän on tarkistettava laajennus

Jokainen näistä funktioista tarvitsee vain yhden argumentin, polun, johon tiedosto on tallennettu, ja jokainen hyväksyy URL yhtä helposti kuin paikallinen polku.

library(haven)

haven mukana conda r-essential muuten mene linkkiä tai terminaaliin conda asenna -c conda-forge r-haven

Lue SAS-tiedostoja

Esimerkkissämme aiomme käyttää IDRE:n pääsytietojoukkoa.

PATH_sas <- 'https://github.com/guru99-edu/R-Programming/blob/master/binary.sas7bdat?raw=true'
df <- read_sas(PATH_sas)
head(df)

lähtö:

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

Lue STATA-tiedostoja

STATA-datatiedostoille voit käyttää read_dta(). Käytämme täsmälleen samaa tietojoukkoa, mutta tallennamme .dta-tiedostoon.

PATH_stata <- 'https://github.com/guru99-edu/R-Programming/blob/master/binary.dta?raw=true'
df <- read_dta(PATH_stata)
head(df)

lähtö:

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

Lue SPSS-tiedostoja

read_sav() avaa SPSS-tiedoston, jonka tiedostopääte on .sav.

PATH_spss <- 'https://github.com/guru99-edu/R-Programming/blob/master/binary.sav?raw=true'
df <- read_sav(PATH_spss)
head(df)

lähtö:

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

Tietojen tuonnin parhaat käytännöt

Alla olevan tarkistuslistan läpikäyminen ennen tuontia säästää suurimman osan jälkikäteen tehtävästä siivouksesta:

  • Tyypillinen laskentataulukon muoto on käyttää ensimmäisiä rivejä otsikkona (yleensä muuttujien niminä).
  • Vältä välilyöntejä tiedosto- tai sarakenimessä, koska ne voidaan lukea sarakeerottimena. Käytä niiden sijaan alaviivaa.
  • Lyhyet nimet ovat suositeltavia
  • Älä käytä nimessä symboleja. Kirjoita vaihtokurssi_dollar_euro vaihtokurssi_$_€ sijaan.
  • Koodaa puuttuvat arvot NA-muodossa tyhjien merkkien, viivojen tai vartijanumeroiden, kuten -99, sijaan, jotka muuten pitäisi siivota jälkikäteen.

Tietojen tuominen R:ään: Funktioviite

Alla olevassa taulukossa luetellaan kunkin tiedostotyypin tuontifunktio, sitä tarjoava kirjasto ja sen oletusargumentit:

Kirjasto Tavoite Toiminto Oletusargumentit
utils Lue CSV-tiedosto read.csv() tiedosto, otsikko = TOSI, syyskuu = “,”
readxl Lue EXCEL-tiedosto lue_excel() polku, alue = NULL, sarakkeen_nimet = TOSI
satama Lue SAS-tiedosto read_sas() polku
satama Lue STATA-tiedosto lue_dta() / lue_stata() polku
satama Lue SPSS-tiedosto read_sav() polku

Toinen taulukko näyttää tapoja tuoda valinta read_excel()-funktiolla:

Toiminto Tavoite argumentit
lue_excel() Lue n rivien lukumäärä n_max = 10
Valitse rivit ja sarakkeet kuten Excelissä alue = "A1:D10"
Valitse rivit indekseillä range= solu_rivit(1:3)
Valitse kirjaimilla varustetut sarakkeet alue = solu_cols("A:C")

UKK

R 4.0.0 muutti stringsAsFactors-oletusarvon arvosta TRUE arvoon FALSE. Merkkisarakkeet pysyvät nyt merkkeinä. Välitä argumentti eksplisiittisesti, jos komentosarjasi on toimittava samalla tavalla vanhemmissa R-versioissa.

Vaihda URL koko paikallinen polku lainausmerkeissä, kuten ”C:/Käyttäjät/nimi/data.csv”. Käytä vinoviivoja tai kaksinkertaisia ​​kenoviivoja Windowsja vahvista työhakemisto getwd()-funktiolla.

readxl lukee .xls- ja .xlsx-tiedostoja puhtaassa R:ssä ilman Java riippuvuus. Vain vanhempi xlsx-paketti vaatii Java r:n kauttaJava, minkä vuoksi readxl on suositeltu valinta.

Hiljaiset tyypin muutokset tuonnin yhteydessä ovat yleinen syy toistumattomiin tekoälytuloksiin. Saraketyyppien eksplisiittinen määrittäminen, kuten read_csv()-funktio raportoi ne, varmistaa, että harjoitusdatajoukko latautuu identtisesti joka kerta.

Kyllä. Tekoälyavustajat voivat diagnosoida virheellisiä erottimia, koodausongelmia ja väärin luettuja otsikoita virheilmoituksesta. Vahvista tulos aina str():llä tai glimpse():llä ennen analyysin jatkamista.

Tiivistä tämä viesti seuraavasti: