Programovanie

5 užitočných možností v obore tabuľky R data.table

Rovnako ako všetky funkcie v balíku data.table R, aj fread je rýchly. Veľmi rýchlo. Ale treba sa báť viac ako rýchlosti. Má niekoľko užitočných funkcií a možností pri importe externých údajov do R. Tu je päť najužitočnejších.

Poznámka: Ak chcete postupovať ďalej, stiahnite si súbor CSV New York Times s dennými prípadmi Covid-19 podľa krajov USA na adrese //github.com/nytimes/covid-19-data/raw/master/us-counties. csv.

Použite možnosť fread's nrow

Je váš súbor veľký? Chceli by ste pred importovaním celej veci preskúmať jej štruktúru - bez musíte ho otvoriť v textovom editore alebo exceli? Použite fread’s nrow možnosť importovať iba časť súboru na prieskum.

Nasledujúci kód importuje iba prvých 10 riadkov súboru CSV.

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

Ak chcete iba zobraziť názvy stĺpcov bez akýchkoľvek údajov, môžete použiť nrows = 0

Použite voľbu fread's select

Keď poznáte štruktúru súborov, môžete vyberte stĺpce, ktoré chcete importovať. fread’s vyberte Táto možnosť vám umožní vybrať stĺpce, ktoré chcete zachovať. vyberte vezme vektor z ktoréhokoľvek stĺpca mien alebo poloha stĺpca čísla. Ak sú názvy, musia byť v úvodzovkách, ako väčšina vektorov znakových reťazcov:

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

select = c ("date", "county", "state", "cases"))

Ako vždy, čísla nepotrebujú úvodzovky:

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

Ako môžete vidieť v tejto ďalšej skupine kódu, môžete použiť objekt R s vektorom názvov stĺpcov vo vnútri fread. Vytváram vektor moje_coly s dátumom, krajom, štátom a prípadmi; potom použijem tento vektor vo vnútri fread.

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

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

Opak vyberte je pokles. Môžete zvoliť import všetkých stĺpcov okrem tie, s ktorými zadáte pokles, ako napríklad:

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

Ako s vyberte, pokles vezme vektor názvov stĺpcov alebo číselných pozícií.

Použite chlieb s grepom

Ak poznáte Unix, môžete spúšťať nástroje príkazového riadku priamo z vnútra súboru. Napríklad, ak by som chcel iba údaje z Kalifornie, mohol by som pomocou grepu importovať iba riadky, ktoré obsahujú text „Kalifornia“. Upozorňujeme, že toto vyhľadáva každý celý riadok ako textový reťazec, nie ako konkrétny stĺpec, takže vaše údaje musia byť vo formáte, v ktorom to dáva zmysel.

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

Grep bohužiaľ nechápe názvy stĺpcov pôvodného súboru, takže skončíte s predvolenými názvami.

hlava (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 Kalifornia 6037 1 0 5: 2020-01-27 Orange California 6059 1 0 6: 2020-01-28 Los Angeles Kalifornia 6037 1 0

Fread nám však umožňuje určiť názvy stĺpcov pomocou col.names možnosť. Mená môžem nastaviť na základe mien z mydt10, ktoré som vytvoril vyššie.

ca hlava (ca) dátum okresný štát prípady fips úmrtia 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 Kalifornia 6037 1 0 5: 2020-01-27 Orange California 6059 1 0 6: 2020-01-28 Los Angeles Kalifornia 6037 1 0

Môžeme tiež použiť regulárne výrazy s grep’s -E Táto možnosť nám umožňuje vykonávať zložitejšie vyhľadávania, napríklad hľadať štyri štáty naraz.

stavy4 <- fread (cmd = "grep -E 'Texas | Arizona | Florida | Južná Karolína' us-counties.csv",

col.names = names (mydt10))

Ešte raz pripomienka: Hľadá sa každý z týchto názvov štátov kdekoľvek v rade, nielen v stĺpci štát. Ak spustíte vyššie uvedený kód a skontrolujete, ktoré stavy sú vo výsledkoch zahrnuté jedinečný (štát 4 $ štát), v stĺpci štáty uvidíte Oklahoma a Missouri, ako aj Texas, Arizona, Florida a Južná Karolína. Je to tak preto, že tak majú Oklahoma aj Missouri kraje menom Texas.

Takže grep počas importu súboru je spôsob, ako odfiltrovať množstvo údajov, ktoré nechcete, z veľmi veľkej množiny dát; ale nezaručuje to, že dostanete iba to, čo chcete. Po tomto druhu importu by ste mali stále filtrovať konkrétne údaje stĺpcov, aby ste sa uistili, že ste nedostali nič neočakávané.

Použite možnosť fread's colClasses

Môžeš sk Nastaviť triedy stĺpcov počas importu - iba pre niekoľko stĺpcov, nie pre každý. Napríklad stĺpec dátumu v týchto údajoch prichádza ako znakové reťazce, aj keď je vo formáte rok-mesiac-deň. Môžeme nastaviť pomenovaný stĺpec dátum na dátový typ Dátum počas importu pomocou colClasses možnosť.

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

Teraz sú dátumy.

> str (mydt) Triedy „data.table“ a „data.frame“: 322651 obs. zo 6 premenných: $ date: Dátum, formát: "2020-01-21" "2020-01-22" "2020-01-23" ... $ kraj: chr "Snohomish" "Snohomish" "Snohomish" "Cook „... $ state: chr" Washington "" Washington "" Washington "" Illinois "... $ fips: int 53061 53061 53061 17031 53061 6059 17031 53061 4013 6037 ... $ prípady: int 1 1 1 1 1 1 1 1 1 1 ... $ úmrtia: int 0 0 0 0 0 0 0 0 0 0 ...

Použite vlákno na súbory zazipované

Môžeš importujte komprimovaný súbor bez jeho rozbalenia. fread dokáže priamo importovať súbory gz a bz2, ako naprmydt <- fread ("myfile.gz"). Ak potrebujete importovať súbor ZIP, môžete ho rozbaliť pomocou súboru rozbaliť systémový príkaz v rámci vlákna pomocou syntaxemydt <- fread (cmd = 'unzip -cq myfile.zip').

Ďalšie tipy R nájdete na stránke Robte viac s R.

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