Programmering

5 praktiske muligheder i R data.table's fread

Som alle funktioner i data.table R-pakken er fread hurtig. Meget hurtig. Men der er mere at frede end hastighed. Det har flere nyttige funktioner og muligheder, når du importerer eksterne data til R. Her er fem af de mest nyttige.

Bemærk: Hvis du gerne vil følge med, skal du downloade New York Times CSV-fil med daglige Covid-19 sager fra det amerikanske amt på //github.com/nytimes/covid-19-data/raw/master/us-counties. csv.

Brug fread's nrows option

Er din fil stor? Vil du undersøge dens struktur, inden du importerer det hele - uden skal du åbne det i en teksteditor eller Excel? Brug fread's nrows mulighed for at importer kun en del af en fil til udforskning.

Koden nedenfor importerer kun de første 10 rækker af CSV.

mydt10 <- fread ("us-counties.csv", nrows = 10)

Hvis du bare vil se kolonnenavne uden nogen data overhovedet, kan du bruge nr. = 0

Brug fread's select option

Når du kender filstrukturen, kan du vælg, hvilke kolonner der skal importeres. fread's Vælg med indstilling kan du vælge kolonner, du vil beholde. Vælg tager en vektor af begge søjler navne eller søjleposition numre. Hvis navne, skal de være i anførselstegn, som de fleste vektorer med tegnstrenge:

mydt <- fread ("us-counties.csv",

vælg = c ("dato", "amt", "stat", "sager"))

Som altid behøver tal ikke anførselstegn:

mydt <- fread ("us-counties.csv", vælg = c (1,2,3,5))

Du kan bruge et R-objekt med en vektor med kolonnenavne inde i fread, som du kan se i denne næste gruppe af kode. Jeg opretter en vektor mine_koler med dato, amt, stat og sager så bruger jeg den vektor inden i fread.

my_cols <- c ("date", "county", "state", "cases")

mydt <- fread ("us-counties.csv", vælg = my_cols)

Det modsatte af Vælg er dråbe. Du kan vælge at importere alle kolonner undtagen dem, du angiver med dråbe, såsom:

mydt <- fread ("us-counties.csv", drop = c ("fips", "deaths"))

Som med Vælg, dråbe tager en vektor med søjlenavne eller numeriske positioner.

Brug fread med grep

Hvis du er fortrolig med Unix, kan du udfør kommandolinjeværktøjer lige indefra fread. For eksempel, hvis jeg bare ville have data fra Californien, kunne jeg bruge grep til kun at importere linjer, der indeholder teksten "Californien". Bemærk, at dette søger hver hele række som en tekststreng, ikke en bestemt kolonne, så dine data skal være i et format, hvor det giver mening.

ca <- fread ("grep Californien us-counties.csv")

Desværre forstår grep ikke den originale fils kolonnenavne, så du ender med standardnavne.

hoved (ca) V1 V2 V3 V4 V5 V6 1: 2020-01-25 Orange Californien 6059 1 0 2: 2020-01-26 Los Angeles Californien 6037 1 0 3: 2020-01-26 Orange Californien 6059 1 0 4: 2020 -01-27 Los Angeles Californien 6037 1 0 5: 2020-01-27 Orange Californien 6059 1 0 6: 2020-01-28 Los Angeles Californien 6037 1 0

Fread lader os dog specificere kolonnenavne med kol. navne mulighed. Jeg kan indstille navnene baseret på navne fra mydt10, som jeg oprettede ovenfor.

ca leder (ca) dato amtsstat udligner tilfælde dødsfald 1: 2020-01-25 Orange Californien 6059 1 0 2: 2020-01-26 Los Angeles Californien 6037 1 0 3: 2020-01-26 Orange Californien 6059 1 0 4: 2020-01-27 Los Angeles Californien 6037 1 0 5: 2020-01-27 Orange Californien 6059 1 0 6: 2020-01-28 Los Angeles Californien 6037 1 0

Vi kan også bruge regulære udtryk med grep -E mulighed, så vi kan foretage mere komplekse søgninger, såsom at søge efter fire stater på én gang.

states4 <- fread (cmd = "grep -E 'Texas | Arizona | Florida | South Carolina' us-counties.csv",

col.names = navne (mydt10))

Endnu en gang en påmindelse: Dette leder efter hvert af disse statsnavne hvor som helst i rækken, ikke kun i statskolonnen. Hvis du kører koden ovenfor og kontrollerer, hvilke stater der er inkluderet i resultaterne med unik (stater4 $ stat), vil du se Oklahoma og Missouri i statskolonnen sammen med Texas, Arizona, Florida og South Carolina. Det skyldes, at både Oklahoma og Missouri har gjort det amter hedder Texas.

Så grep under filimport er en måde at filtrere en masse data ud, som du ikke ønsker, fra et meget stort datasæt; men det garanterer ikke, at du kun får det, du vil have. Efter denne form for import skal du stadig filtrere specifikt på kolonnedata for at sikre, at du ikke fik noget uventet.

Brug fread's colClasses-mulighed

Du kan indstil kolonneklasser under import - for kun et par kolonner, ikke alle. F.eks. Kommer datakolonnen i disse data ind som tegnstrenge, selvom den er i år-måned-dag-format. Vi kan indstille den kolonne, der hedder dato til datatypen Dato under import ved hjælp af colClasses mulighed.

mydt <- fread ("us-counties.csv", colClasses = c ("date" = "Date"))

Nu er datoer datoer.

> str (mydt) Klasser 'data.table' og 'data.frame': 322651 obs. af 6 variabler: $ dato: Dato, format: "2020-01-21" "2020-01-22" "2020-01-23" ... $ county: chr "Snohomish" "Snohomish" "Snohomish" "Cook "... $ state: chr" Washington "" Washington "" Washington "" Illinois "... $ fips: int 53061 53061 53061 17031 53061 6059 17031 53061 4013 6037 ... $ cases: int 1 1 1 1 1 1 1 1 1 1 ... $ dødsfald: int 0 0 0 0 0 0 0 0 0 0 ...

Brug fread på zip-filer

Du kan importer en fil med lynlås uden først at pakke den ud. fread kan importere gz- og bz2-filer direkte, f.eksmydt <- fread ("myfile.gz"). Hvis du har brug for at importere en zip-fil, kan du pakke den ud med pakke ud systemkommando inden for fread ved hjælp af syntaksenmydt <- fread (cmd = 'unzip -cq myfile.zip').

For flere R-tip, gå til siden Gør mere med R.