Programovanie

Ako používať .SD v balíku R data.table

Pre niektorých používateľov tabuľky data.table je „dot-SD“ trochu záhadou. Ale tvorca tabuľky data.table Matt Dowle mi povedal, že je to vlastne celkom jednoduché: predstavte si to ako symbol predstavujúci „každú skupinu“. Poďme si predstaviť niekoľko príkladov.

Mám súbor údajov o denných cyklistických výletoch zo systému zdieľania bicyklov v bostonskej oblasti. Ak chcete pokračovať, môžete si stiahnuť súbor CSV z odkazu v dolnej časti tohto článku.

Načítam súbor data.table a importujem svoj súbor CSV pomocou súboru data.table fread () funkcia. V kóde nižšie ukladám údaje do dátovej tabuľky s názvom mydt.

knižnica (data.table)

mydt <- fread ("daily_cycling_trips_by_usertype.csv")

Ďalej navrhujem tlačiť prvých šesť riadkov pomocou hlava (mydt) aby sme videli, ako vyzerajú údaje. Uvidíte, že údaje obsahujú stĺpce pre dátum, typ používateľa (predplatiteľ alebo zákazník s jednou cestou), počet ciest, rok a začiatočný dátum mesiaca, ktoré vám pomôžu s celkovými sumami za mesiac.

Prvý príklad, ktorý Matt navrhol: Vytlačiť prvých niekoľko riadkov tabuľky s údajmi zoskupené podľa typu používateľa. (Filtrujeme prvých 12 riadkov, aby sme lepšie videli výstup).

mydt [1:12, print (.SD), by = usertype]

print () iterované nad každou skupinou a vytlačené dvakrát, jeden pre každý typ používateľa. Problém však je, že neviem, ktorá je skupina používateľov zákazníkov a ktorá skupina používateľov predplatiteľov. Stĺpec „by“ sa nevytlačil. Našťastie mi na to Matt ukázal malý trik.

Ak ste oboznámení s mydt [i, j, autor] syntax dátovej tabuľky, za zátvorkou za názvom tabuľky údajov sú tri časti: i, ja od. i je na filtrovanie riadkov, j je na to, čo chcete robiť, a od je spôsob, akým chcete zoskupiť svoje údaje.

Napríklad:

mydt [1:12, {tlač (.SD)}, autor = typ používateľa)

V riadku kódu vyššie som vložil zložené zátvorky okolo j časť. To ma nechá pridať viac R výrazov do j argument. Teraz je to stále to isté ako predtým: žiadne mená typov používateľov.

Ale v tomto ďalšom riadku kódu sa pozrite na vyhlásenie R, ktoré som pridal (Matt mi povedal, že mám pridať): tlačiť (.BY).

mydt [1:12, {tlač (.BY); print (.SD)}, by = usertype]

.BY je špeciálny symbol tabuľky údajov, ktorý má hodnotu od - podľa ktorého stĺpca alebo stĺpcov som zoskupený.

Ak spustíte tento kód, budete mať spolu s výtlačkom aj názov každej premennej zoskupenia.

Sharon Machlis,

Toto je veľmi základný príklad. Hádam, možno budete chcieť urobiť niečo trochu zaujímavejšie .SD než tlačiť. Ďalej sa pozrime na zhrnutie údajov podľa skupín a na výpočet toho, ktorý deň mal tento rok najviac ciest každý mesiac.

Tento riadok kódu obsahuje všetko:

mydt [Year == "2019", .SD [which.max (Trips)], by = MonthStarting]

The i prvý argument v zátvorkách filtruje všetky riadky, kde je rok 2019. The j argument je zaujímavá časť pre .SD. Rozmýšľať o .SD ako odkaz na každú skupinu vašich údajov. Alebo ako Matt povedal: „Áno j od od. Ako pre slučka. “

Čo ak chcete vidieť maximá pre každý mesiac a typ používateľa? Stačí pridať ďalší stĺpec do od (tretí) argument:

mydt [Rok == "2019", .SD [which.max (Cesty)],

autor =. (MonthStarting, usertype)]

Existuje niekoľko spôsobov, ako v skupine data.table vyjadriť zoskupenie podľa viac ako jedného stĺpca. Jedným zo spôsobov je bodka pred nekótovanými názvami stĺpcov, ako je uvedené vyššie. Ďalším je použitie zoznam namiesto bodky napríklad:

mydt [Rok == "2019", .SD [which.max (Cesty)],

by = list (MonthStarting, usertype)]

Môžete tiež použiť konvenčný základný vektor R s úvodzovkami okolo názvu každého stĺpca.

mydt [Rok == "2019", .SD [which.max (Cesty)],

autor = c ("MonthStarting", "usertype")]

Ďalšie tipy R nájdete na stránke videa „Do More With R“ na stránke YouTube alebo v zozname videí „Do More With R“.

stiahnite si ukážkový súbor CSV s údajmi o bicykli, ktorý bude sprevádzať môj článok a video „Ako používať .SD v balíku R data.table“ Sharon Machlis

Dúfam, že sa uvidíme v ďalšej epizóde!

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