Programiranje

5 priročnih možnosti v freadu R data.table

Kot vse funkcije v paketu data.table R je tudi fread hiter. Zelo hitro. Ampak tu je več fread kot hitrost. Ima nekaj koristnih funkcij in možnosti pri uvozu zunanjih podatkov v R. Tu je pet najbolj uporabnih.

Opomba: Če želite nadaljevati, prenesite datoteko CSV New York Timesa o dnevnih primerih Covid-19 ameriškega okrožja na //github.com/nytimes/covid-19-data/raw/master/us-counties csv.

Uporabite možnost fread's nrows

Je vaša datoteka velika? Bi radi preučili njegovo strukturo, preden uvozite celoto - brez ga morate odpreti v urejevalniku besedil ali Excelu? Uporabite fread's nrows možnost uvozite le del datoteke za raziskovanje.

Spodnja koda uvozi le prvih 10 vrstic CSV.

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

Če želite samo videti imena stolpcev brez kakršnih koli podatkov, lahko uporabite nrows = 0

Uporabite možnost fread's select

Ko poznate strukturo datotek, lahko izberite stolpce, ki jih želite uvoziti. fread's izberite možnost vam omogoča, da izberete stolpce, ki jih želite obdržati. izberite vzame vektor katerega koli stolpca imena ali položaj stolpca številke. Če so imena, morajo biti v narekovajih, tako kot večina vektorjev nizov znakov:

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

select = c ("datum", "okrožje", "država", "primeri"))

Kot vedno tudi številke ne potrebujejo narekovajev:

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

Objekt R lahko uporabite z vektorjem imen stolpcev znotraj fread, kot lahko vidite v tej naslednji skupini kode. Ustvarim vektor my_cols z datumom, okrožjem, državo in primeri; potem uporabim ta vektor v freadu.

my_cols <- c ("datum", "okrožje", "država", "primeri")

mydt <- fread ("us-counties.csv", select = my_cols)

Nasprotno od izberite je padec. Izberete lahko uvoz vseh stolpcev razen tiste, ki jih določite z padec, kot naprimer:

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

Tako kot pri izberite, padec zavzame vektor imen stolpcev ali številskih položajev.

Uporabite fread z grep

Če Unix poznate, ga lahko zaženite orodja ukazne vrstice kar znotraj fread. Če bi na primer želel samo podatke iz Kalifornije, bi lahko z grepom uvozil samo vrstice, ki vsebujejo besedilo »California«. Upoštevajte, da to išče vsaka celotna vrstica kot besedilni niz, ne kot določen stolpec, zato morajo biti vaši podatki v obliki, kjer je to smiselno.

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

Na žalost grep ne razume imen stolpcev izvirne datoteke, zato na koncu dobite privzeta imena.

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

Vendar nam fread omogoča, da s stolpcem določimo imena stolpcev col.names možnost. Imena lahko nastavim na podlagi imen iz mydt10, ki sem jih ustvaril zgoraj.

ca glava (ca) datum okrožje država fips primeri smrtni primeri 1: 2020-01-25 Orange California 6059 1 0 2: 2020-01-26 Los Angeles California 6037 1 0 3: 2020-01-26 Orange California 6059 1 0 4: 2020-01-27 Los Angeles California 6037 1 0 5: 2020-01-27 Orange California 6059 1 0 6: 2020-01-28 Los Angeles California 6037 1 0

Uporabljamo lahko tudi regularne izraze, z grep's -E možnost, ki nam omogoča bolj zapletena iskanja, na primer iskanje štirih stanj hkrati.

States4 <- fread (cmd = "grep -E 'Texas | Arizona | Florida | Južna Karolina' us-counties.csv",

col.names = imena (mydt10))

Še enkrat opomnik: To išče vsako od teh državnih imen kjerkoli v vrsti, ne samo v stolpcu stanja. Če zaženete zgornjo kodo in preverite, katera stanja so vključena v rezultate z edinstveno (stanje4 $ stanje), v stolpcu zveznih držav boste videli Oklahomo in Missouri, skupaj s Teksasom, Arizono, Florido in Južno Karolino. To je zato, ker imata tako Oklahoma kot Missouri okrožij z imenom Texas.

Torej, grep med uvozom datotek je način, kako iz zelo velikega nabora filtrirati veliko podatkov, ki jih ne želite; vendar ne zagotavlja, da dobite samo tisto, kar želite. Po tovrstnem uvozu morate še vedno natančno filtrirati podatke stolpcev, da se prepričate, da niste dobili ničesar nepričakovanega.

Uporabite možnost fread's colClasses

Ti lahko nastavite razrede stolpcev med uvozom - za le nekaj stolpcev, ne za vsakega. Na primer, datumski stolpec v teh podatkih je v obliki nizov znakov, čeprav je v obliki leto-mesec-dan. Imenovani stolpec lahko nastavimo datum do podatkovnega tipa Datum med uvozom z uporabo colClasses možnost.

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

Zdaj so datumi.

> str (mydt) Razreda 'data.table' in 'data.frame': 322651 obs. od 6 spremenljivk: $ datum: Datum, oblika: "2020-01-21" "2020-01-22" "2020-01-23" ... $ okrožje: chr "Snohomish" "Snohomish" "Snohomish" "Cook "... $ state: chr" Washington "" Washington "" Washington "" Illinois "... $ fips: int 53061 53061 53061 17031 53061 6059 17031 53061 4013 6037 ... $ primeri: int 1 1 1 1 1 1 1 1 1 1 ... $ smrtnih primerov: int 0 0 0 0 0 0 0 0 0 0 ...

Uporabite fread za stisnjene datoteke

Ti lahko uvozite stisnjeno datoteko, ne da bi jo prej razpakirali. fread lahko neposredno uvaža datoteke gz in bz2, na primermydt <- fread ("myfile.gz"). Če želite uvoziti datoteko zip, jo lahko odpakirate s razpakirajte sistemski ukaz v freadu z uporabo sintaksemydt <- fread (cmd = 'unzip -cq myfile.zip').

Za več nasvetov R pojdite na stran Naredite več z R.

$config[zx-auto] not found$config[zx-overlay] not found