Programiranje

Kako uporabljati .SD v paketu R data.table

Za nekatere uporabnike data.table je "dot-SD" nekoliko skrivnost. Toda ustvarjalec data.table Matt Dowle mi je povedal, da je pravzaprav povsem preprosto: predstavljajte si ga kot simbol, ki predstavlja "vsako skupino". Poglejmo si nekaj primerov.

Imam zbirko podatkov o dnevnih kolesarskih potovanjih iz sistema za izmenjavo koles na območju Bostona. Če želite nadaljevati, lahko datoteko CSV prenesete s povezave na dnu tega članka.

Naložil bom data.table in z datotekami data.table uvozil svojo datoteko CSV fread () funkcijo. V spodnji kodi podatke shranjujem v podatkovno tabelo, imenovano mydt.

knjižnica (data.table)

mydt <- fread ("daily_cycling_trips_by_usertype.csv")

Nato predlagam, da prvih šest vrstic natisnete z glava (mydt) da vidite, kako izgledajo podatki. Videli boste, da imajo podatki stolpce z datumom, vrsto uporabnika (naročnik ali stranka z enim potovanjem), število potovanj, leto in začetni datum meseca, ki pomagajo pri seštevanju po mesecih.

Prvi primer, ki ga je predlagal Matt: natisnite prvih nekaj vrstic tabele podatkov razvrščene po uporabniškem tipu. (Prvih 12 vrstic filtriramo samo zato, da si lažje ogledamo izhod).

mydt [1:12, tisk (.SD), avtor = usertype]

natisni () ponovljeno nad vsako skupino in natisnjeno dvakrat, po en za vsako vrsto uporabnika. Težava pa je v tem, da ne vem, katera skupina uporabnikov je stranka in katera skupina naročnikov. Stolpec »z« se ni natisnil. Na srečo mi je Matt za to pokazal majhen trik.

Če ste seznanjeni mydt [i, j, avtor] sintaksa data.table, po imenu podatkovne tabele so v zapisu oklepajev trije deli: jaz, j, in avtor. jaz je za filtriranje vrstic, j je za tisto, kar želite storiti, in avtor je način, kako želite združiti podatke.

Na primer:

mydt [1:12, {print (.SD)}, avtor = usertype]

V zgornji vrstici kode sem pravkar dal skodrane oklepaje okrog j del. To mi bo dovolilo dodajte več izrazov R znotraj j prepir. Zdaj je še vedno enako kot prej: brez imen uporabniških tipov.

Toda v tej naslednji vrstici kode poglejte izjavo R, ki sem jo dodal (no, Matt mi je rekel, naj dodam): natisni (.BY).

mydt [1:12, {print (.BY); natisni (.SD)}, avtor = usertype]

.BY je poseben simbol data.table, ki vsebuje vrednost avtor - po katerem stolpcu ali stolpcih razvrščam.

Če zaženete to kodo, boste imeli skupaj z izpisom ime vsake spremenljivke za združevanje.

Sharon Machlis,

To je torej zelo osnovni primer. Predvidevam, da boste morda želeli narediti nekaj bolj zanimivega .SD vseeno kot tisk. Nato si oglejmo povzemanje podatkov po skupinah in izračunamo, kateri dan je imel največ potovanj vsak mesec v tem letu.

V tej vrstici kode je vse:

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

The jaz prvi argument v oklepajih filtrira za vse vrstice, kjer je leto 2019 j argument je zanimiv del za .SD. Pomislite .SD kot sklicevanje na vsako skupino vaših podatkov. Ali kot je rekel Matt: »Saj imaš j avtor avtor. Kot za zanko. "

Kaj, če želite videti maksimume za vsak mesec in vrsto uporabnika? Samo dodajte še en stolpec v avtor (tretji) argument:

mydt [Leto == "2019", .SD [which.max (Izleti)],

od =. (MonthStarting, usertype)]

Razvrščanje v skupine z več kot enim stolpcem v data.table je na več načinov. Eden od načinov je pika pred imeni stolpcev brez navedb, kot je navedeno zgoraj. Druga je uporaba seznam namesto pike, na primer:

mydt [Leto == "2019", .SD [which.max (Izleti)],

po = seznam (MonthStarting, usertype)]

Uporabite lahko tudi običajni osnovni R vektor z narekovaji okoli imena vsakega stolpca.

mydt [Leto == "2019", .SD [which.max (Izleti)],

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

Če želite več nasvetov R, pojdite na video stran »Naredite več z R« ali si oglejte YouTube seznam predvajanja »Naredi več z R«.

prenesite datoteko CSV z vzorčnimi podatki o kolesarskem potovanju, ki spremlja moj članek in videoposnetek »Kako uporabljati .SD v paketu R data.table« in video Sharon Machlis

Upam, da se vidimo v naslednji epizodi!

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