Programování

5 praktických možností v souboru R data.table

Stejně jako všechny funkce v balíčku data.table R je fread rychlý. Velmi rychle. Ale je třeba se bojit více než rychlosti. Má několik užitečných funkcí a možností při importu externích dat do R. Zde je pět nejužitečnějších.

Poznámka: Pokud byste chtěli pokračovat, stáhněte si soubor New York Times CSV s denními případy Covid-19 podle okresů USA na adrese //github.com/nytimes/covid-19-data/raw/master/us-counties. CSV.

Použijte možnost Fread's Nrows

Je váš soubor velký? Chcete před importováním celé věci prozkoumat jeho strukturu - bez musíte jej otevřít v textovém editoru nebo Excel? Použijte fread's nrow možnost importovat pouze část souboru pro průzkum.

Níže uvedený kód importuje pouze prvních 10 řádků souboru CSV.

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

Pokud chcete pouze zobrazit názvy sloupců bez jakýchkoli údajů, můžete použít nrows = 0

Použijte možnost výběru fread

Jakmile znáte strukturu souborů, můžete vyberte sloupce, které chcete importovat. fread's vybrat Možnost umožňuje vybrat sloupce, které chcete zachovat. vybrat vezme vektor libovolného sloupce jména nebo umístění sloupce čísla. Pokud jsou názvy, musí být v uvozovkách, jako většina vektorů řetězců znaků:

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

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

Čísla jako vždy nepotřebují uvozovky:

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

Objekt R můžete použít s vektorem názvů sloupců uvnitř fread, jak vidíte v této další skupině kódu. Vytvořím vektor my_cols s datem, krajem, státem a případy; pak použiji tento vektor uvnitř fread.

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

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

Opak vybrat je upustit. Můžete se rozhodnout importovat všechny sloupce až na ty, které zadáte upustit, jako:

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

Jako s vybrat, upustit vezme vektor názvů sloupců nebo číselných pozic.

Použijte fread s grep

Pokud znáte Unix, můžete spouštět nástroje příkazového řádku přímo zevnitř fread. Například kdybych chtěl pouze kalifornské údaje, mohl bych pomocí grepu importovat pouze řádky, které obsahují text „Kalifornie“. Toto hledání prohledává každý celý řádek jako textový řetězec, nikoli jako konkrétní sloupec, takže vaše data musí být ve formátu, kde to dává smysl.

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

Grep bohužel nerozumí názvům sloupců původního souboru, takže skončíte s výchozími názvy.

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

Fread nám však umožňuje určit názvy sloupců pomocí col. jména volba. Můžu nastavit jména na základě jmen z mydt10, které jsem vytvořil výše.

ca head (ca) date county state fips cases úmrtí 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 Kalifornie 6037 1 0 5: 2020-01-27 Orange Kalifornie 6059 1 0 6: 2020-01-28 Los Angeles Kalifornie 6037 1 0

Můžeme také použít regulární výrazy s grep -E Tato možnost nám umožňuje provádět složitější vyhledávání, například hledat čtyři státy najednou.

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

col.names = names (mydt10))

Ještě jednou připomínka: Hledá se každý z těchto názvů stavů kdekoli v řadě, nejen ve sloupci stavu. Pokud spustíte výše uvedený kód a zkontrolujete, jaké stavy jsou zahrnuty ve výsledcích s jedinečný (stát 4 $ stát), uvidíte ve sloupci Státy Oklahoma a Missouri spolu s Texasem, Arizonou, Floridou a Jižní Karolínou. Je to proto, že to mají Oklahoma i Missouri kraje jmenoval Texas.

Grep během importu souboru je tedy způsob, jak odfiltrovat spoustu dat, která nechcete, z velmi velké datové sady; ale nezaručuje to, že dostanete jen to, co chcete. Po tomto druhu importu byste měli i nadále filtrovat konkrétně na údaje sloupců, abyste se ujistili, že jste nedostali nic neočekávaného.

Použijte možnost fread's colClasses

Můžeš nastavit třídy sloupců během importu - pouze pro několik sloupců, ne každý. Například sloupec data v těchto datech přichází jako řetězce znaků, i když je ve formátu rok-měsíc-den. Můžeme nastavit sloupec s názvem datum k datovému typu datum během importu pomocí colClasses volba.

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

Nyní jsou data Data.

> str (mydt) Třídy „data.table“ a „data.frame“: 322651 obs. ze 6 proměnných: $ date: Datum, formát: "2020-01-21" "2020-01-22" "2020-01-23" ... $ kraj: chr "Snohomish" "Snohomish" "Snohomish" "Cook "... $ stát: chr" Washington "" Washington "" Washington "" Illinois "... $ fips: int 53061 53061 53061 17031 53061 6059 17031 53061 4013 6037 ... $ případy: int 1 1 1 1 1 1 1 1 1 1 ... $ úmrtí: int 0 0 0 0 0 0 0 0 0 0 ...

Použijte fread na zip soubory

Můžeš importujte soubor se zipem, aniž byste jej nejprve rozbalili. fread může přímo importovat soubory gz a bz2, napříkladmydt <- fread ("myfile.gz"). Pokud potřebujete importovat soubor ZIP, můžete jej rozbalit pomocí rozbalit systémový příkaz v rámci fread pomocí syntaxemydt <- fread (cmd = 'unzip -cq myfile.zip').

Další tipy pro R najdete na stránce Udělejte více s R.