5 praktičnih mogućnosti u R data.table's fread

Kao i sve funkcije u paketu data.table R, fread je brz. Vrlo brzo. Ali tu je više freada nego brzina. Ima nekoliko korisnih značajki i opcija prilikom uvoza vanjskih podataka u R. Evo pet najkorisnijih.

Napomena: Ako želite nastaviti, preuzmite New York Times CSV datoteku dnevnih slučajeva Covid-19 američke županije na //github.com/nytimes/covid-19-data/raw/master/us-counties. csv.

Upotrijebite fread-ovu opciju nrows

Je li vaša datoteka velika? Želite li ispitati njegovu strukturu prije uvoza cijele stvari - a da je ne morate otvoriti u uređivaču teksta ili Excelu? Upotrijebite fread-ovu nrowsopciju za uvoz samo dijela datoteke za istraživanje .

Kôd u nastavku uvozi samo prvih 10 redaka CSV-a.

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

Ako samo želite vidjeti imena stupaca bez ikakvih podataka, možete koristiti nrows = 0

Upotrijebite opciju odabira freada

Nakon što saznate strukturu datoteke, možete odabrati koje stupce želite uvesti . freadova selectopcija omogućuje vam odabir stupaca koje želite zadržati. selectuzima vektor imena stupaca ili brojeva položaja stupaca . Ako su imena, moraju biti u navodnicima, kao i većina vektora znakovnih nizova:

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

select = c ("datum", "okrug", "država", "slučajevi"))

Kao i uvijek, brojevima nisu potrebni navodnici:

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

Možete koristiti R objekt s vektorom imena stupaca unutar freada, kao što možete vidjeti u ovoj sljedećoj grupi koda. Stvorim vektor my_cols s datumom, županijom, državom i slučajevima; onda koristim taj vektor unutar freada.

my_cols <- c ("datum", "okrug", "država", "slučajevi")

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

Suprotno od selectje drop. Možete odabrati uvoz svih stupaca, osim onih koje navedete drop, kao što su:

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

Kao i kod select, dropuzima vektor imena stupaca ili numeričkih položaja. 

Koristite fread s grepom

Ako ste upoznati s Unixom, možete  izvršavati alate naredbenog retka izravno iz fread-a . Na primjer, ako bih samo želio podatke iz Kalifornije, mogao bih koristiti grep za uvoz samo redaka koji sadrže tekst "California". Imajte na umu da ovo pretražuje svaki cijeli redak kao tekstualni niz, a ne kao određeni stupac, tako da vaši podaci moraju biti u formatu u kojem to ima smisla.

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

Nažalost, grep ne razumije nazive stupaca izvorne datoteke, pa ćete na kraju dobiti zadana 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

Međutim, fread nam omogućuje da odredimo imena stupaca s col.namesopcijom. Imena mogu postaviti na osnovu imena iz mydt10 koje sam gore stvorio.

ca glava (ca) datum okruga država fips slučajevi smrtni slučajevi 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

Također možemo koristiti regularne izraze, uz -Eopciju grep , dopuštajući nam složenija pretraživanja, poput traženja četiri stanja odjednom. 

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

col.names = imena (mydt10))

Još jednom podsjetnik: Ovo traži svako od tih imena država bilo gdje u redu , a ne samo u stupcu stanja. Ako pokrenete gornji kod i provjerite koje su države uključene u rezultate unique(states4$state), u stupcu država vidjet ćete Oklahomu i Missouri, zajedno s Teksasom, Arizonom, Floridom i Južnom Karolinom. To je zato što i Oklahoma i Missouri imaju županije s imenom Texas.

Dakle, grep tijekom uvoza datoteka način je za filtriranje puno podataka koje ne želite iz vrlo velikog skupa podataka; ali ne garantira da ćete dobiti samo ono što želite. Nakon ove vrste uvoza, i dalje biste trebali posebno filtrirati podatke stupca kako biste bili sigurni da niste dobili ništa neočekivano.

Koristite fread-ovu opciju colClasses

Tijekom uvoza možete postaviti klase stupaca - za samo nekoliko stupaca, ne za svaki. Na primjer, datumski stupac u tim podacima dolazi kao niz znakova, iako je u formatu godina-mjesec-dan. Za  vrijeme uvoza pomoću stupca s datumom možemo postaviti tip podataka DatumcolClasses

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

Sada su datumi.

> str (mydt) Klase 'data.table' i 'data.frame': 322651 obs. od 6 varijabli: $ datum: Datum, format: "2020-01-21" "2020-01-22" "2020-01-23" ... $ okrug: chr "Snohomish" "Snohomish" "Snohomish" "Cook "... $ state: chr" Washington "" Washington "" Washington "" Illinois "... $ fips: int 53061 53061 53061 17031 53061 6059 17031 53061 4013 6037 ... $ slučajeva: int 1 1 1 1 1 1 1 1 1 1 ... $ smrtnih slučajeva: int 0 0 0 0 0 0 0 0 0 0 ...

Koristite fread na zip datotekama

Zip datoteku možete uvesti bez da je prethodno raspakirate . fread može izravno uvoziti gz i bz2 datoteke, kao što je  mydt <- fread("myfile.gz"). Ako trebate uvesti zip datoteku, možete je raspakirati pomoću unzipsistemske naredbe unutar fread-a, koristeći sintaksu  mydt <- fread(cmd = 'unzip -cq myfile.zip').

Za više R savjeta idite na stranicu Učini više s R.