Programavimas

5 patogios parinktys „R data.table“

Kaip ir visos „data.table R“ paketo funkcijos, taip pat yra greita. Labai greitai. Tačiau yra daugiau nei greitis. Importuojant išorinius duomenis į R. jis turi keletą naudingų funkcijų ir parinkčių. Štai penki naudingiausi.

Pastaba: jei norite sekti toliau, atsisiųskite „New York Times“ CSV failą, kuriame pateikiami kasdieniniai „Covid-19“ atvejai pagal JAV apskritis, adresu //github.com/nytimes/covid-19-data/raw/master/us-counties. csv.

Naudokite „fread's nrows“ parinktį

Ar jūsų byla yra didelė? Ar norėtumėte išnagrinėti jo struktūrą prieš importuodami visą dalyką - be turėdamas jį atidaryti teksto rengyklėje ar „Excel“? Naudokite duoną nrows galimybė importuoti tik dalį failo tyrimui.

Žemiau pateiktas kodas importuoja tik pirmąsias 10 CSV eilučių.

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

Jei norite tiesiog pamatyti stulpelių pavadinimus be jokių duomenų, galite naudoti nr. = 0

Naudokite „read “pasirinkimo parinktį

Kai žinosite failo struktūrą, galėsite pasirinkite, kuriuos stulpelius norite importuoti. panieka pasirinkite parinktis leidžia pasirinkti norimus laikyti stulpelius. pasirinkite ima bet kurio stulpelio vektorių vardai arba stulpelio padėtis numeriai. Jei vardai, jie turi būti kabutėse, kaip ir dauguma simbolių eilučių vektorių:

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

pasirinkite = c ("data", "apskritis", "valstija", "atvejai"))

Kaip visada, skaičiams nereikia kabučių:

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

Galite naudoti R objektą su stulpelių pavadinimų vektoriu, esančiu failo viduje, kaip matote šioje kitoje kodo grupėje. Aš sukuriu vektorių my_cols su data, apskritimi, valstija ir atvejais; tada aš naudoju tą vektorių.

my_cols <- c („data“, „apskritis“, „valstija“, „atvejai“)

mydt <- fread ("us-county.csv", pasirinkite = my_cols)

Priešprieša pasirinkite yra lašas. Galite pasirinkti importuoti visus stulpelius išskyrus tuos, kuriuos nurodote lašas, toks kaip:

mydt <- fread ("us-county.csv", drop = c ("fips", "mirtys"))

Kaip su pasirinkite, lašas ima stulpelių pavadinimų ar skaitinių pozicijų vektorių.

Naudokite duoną su grep

Jei esate susipažinę su „Unix“, galite vykdyti komandinės eilutės įrankius tiesiai iš failo vidaus. Pavyzdžiui, jei norėčiau tik Kalifornijos duomenų, galėčiau naudoti „grep“ tik importuodamas eilutes, kuriose yra tekstas „Kalifornija“. Atminkite, kad tai ieškoma kiekviena visa eilutė kaip teksto eilutę, o ne konkretų stulpelį, todėl jūsų duomenys turi būti tokio formato, koks yra prasmingas.

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

Deja, „grep“ nesupranta originalaus failo stulpelių pavadinimų, todėl galiausiai bus naudojami numatytieji pavadinimai.

galva (ca) V1 V2 V3 V4 V5 V6 1: 2020-01-25 Oranžinė Kalifornija 6059 1 0 2: 2020-01-26 Los Andželas Kalifornija 6037 1 0 3: 2020-01-26 Oranžinė Kalifornija 6059 1 0 4: 2020 -01-27 Los Andželas Kalifornija 6037 1 0 5: 2020-01-27 Oranžinė Kalifornija 6059 1 0 6: 2020-01-28 Los Andželas Kalifornija 6037 1 0

Tačiau „fread“ leidžia mums nurodyti stulpelių pavadinimus su col.pavadinimai variantą. Vardus galiu nustatyti pagal mano sukurtus vardus iš mydt10.

ca galva (ca) data apskrities valstija nutraukia mirčių atvejus 1: 2020-01-25 Oranžinė Kalifornija 6059 1 0 2: 2020-01-26 Los Andželas Kalifornija 6037 1 0 3: 2020-01-26 Oranžinė Kalifornija 6059 1 0 4: 2020-01-27 Los Andželas Kalifornija 6037 1 0 5: 2020-01-27 Oranžinė Kalifornija 6059 1 0 6: 2020-01-28 Los Andželas Kalifornija 6037 1 0

Taip pat galime naudoti įprastus posakius su grep's -E parinktį, leidžiant mums atlikti sudėtingesnes paieškas, pavyzdžiui, ieškoti keturių būsenų vienu metu.

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

col.names = vardai (mydt10))

Dar kartą priminimas: Čia ieškoma visų tų valstybių pavadinimų bet kurioje eilės vietoje, ne tik valstybės stulpelyje. Jei paleisite aukščiau esantį kodą ir patikrinsite, kurios būsenos yra įtrauktos į rezultatus unikalus (valstijos4 $ valstija), valstijų stulpelyje pamatysite Oklahomą ir Misūrį kartu su Teksasu, Arizona, Florida ir Pietų Karolina. Taip yra todėl, kad Oklahoma ir Misūris turi apskrityse pavadintas Teksasu.

Taigi, grep failų importavimo metu yra būdas iš labai didelio duomenų rinkinio išfiltruoti daugybę duomenų, kurių nenorite; bet tai negarantuoja, kad gauni tik tai, ko nori. Po tokio tipo importavimo vis tiek turėtumėte filtruoti specialiai stulpelių duomenis, kad įsitikintumėte, jog nieko nelaukta.

Naudokite „fread colClasses“ parinktį

Tu gali nustatykite stulpelių klases importavimo metu - tik keliems stulpeliams, ne kiekvienam. Pvz., Datos stulpelis šiuose duomenyse pateikiamas kaip simbolių eilutės, net jei tai metų, mėnesio ir dienos formatas. Mes galime nustatyti pavadintą stulpelį data į duomenų tipą Data importuojant naudojant colClasses variantą.

mydt <- fread ("us-county.csv", colClasses = c ("date" = "Data"))

Dabar datos yra datos.

> str (mydt) „data.table“ ir „data.frame“ klasės: 322651 obs. iš 6 kintamųjų: $ data: Data, formatas: "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 ... $ bylos: int 1 1 1 1 1 1 1 1 1 1 ... $ mirčių: int 0 0 0 0 0 0 0 0 0 0 ...

Užtrauktose rinkmenose naudokite failą

Tu gali importuokite supakuotą failą pirmiausia jo neišpakavę. „fread“ gali tiesiogiai importuoti gz ir bz2 failus, pvz.,mydt <- fread ("myfile.gz"). Jei reikia importuoti ZIP failą, galite jį išpakuoti naudodami atsegti sistemos komanda per sintezę, naudojant sintaksęmydt <- pluoštas (cmd = 'išpakuoti -cq myfile.zip').

Norėdami gauti daugiau R patarimų, eikite į puslapį „Daugiau su R“.