Programmēšana

Kā pakotnē R data.table izmantot .SD

Dažiem data.table lietotājiem “dot-SD” ir mazliet noslēpums. Bet data.table izveidotājs Mets Dauels man teica, ka tas patiesībā ir pavisam vienkārši: vienkārši iedomājieties to kā simbolu, kas apzīmē “katru grupu”. Apskatīsim pāris piemērus.

Man ir datu kopa par ikdienas velobraucieniem no Bostonas apgabala velosipēdu koplietošanas sistēmas. Ja vēlaties sekot līdzi, varat lejupielādēt CSV failu no saites šī raksta beigās.

Es ielādēšu data.table un importēšu savu CSV failu, izmantojot datu.table's maize () funkciju. Tālāk esošajā kodā es datus saglabāju datu tabulā ar nosaukumu mydt.

bibliotēka (data.table)

mydt <- fread ("daily_cycling_trips_by_usertype.csv")

Tālāk es iesaku izdrukāt pirmās sešas rindiņas ar galva (myt) lai redzētu, kā dati izskatās. Jūs redzēsiet, ka datos ir slejas par datumu, lietotāja veidu (abonents vai viena brauciena klients), braucienu skaitu, gadu un mēneša sākuma datumu, lai palīdzētu apkopot kopsummu pa mēnešiem.

Pirmais Mets ieteica piemēru: Izdrukājiet pirmās pirmās tabulas rindas sagrupēts pēc lietotāja veida. (Mēs filtrējam pirmās 12 rindas tikai tāpēc, lai būtu vieglāk redzēt izvadi).

mydt [1:12, drukāt (.SD), autors = usertype]

izdrukāt () iterēts pa katru grupu un izdrukāts divas atsevišķas reizes, pa vienam katram lietotāja tipam. Tomēr problēma ir tā, ka es nezinu, kura ir klientu lietotāju grupa un kura ir abonentu lietotāju grupa. Kolonna “līdz” netika izdrukāta. Par laimi Mets par to man parādīja nelielu triku.

Ja esat pazīstams ar mydt [i, j, autors] data.table sintakse, iekavu apzīmējumam ir trīs daļas aiz datu tabulas nosaukuma: i, j, un pēc. i ir paredzēts rindu filtrēšanai, j ir domāts tam, ko vēlaties darīt, un pēc ir tas, kā vēlaties sagrupēt savus datus.

Piemēram:

mydt [1:12, {drukāt (.SD)}, autors = usertype]

Augšējā koda rindiņā es tikko ieliku cirtainus bikšturus ap j daļa. Tas man ļaus pievienot vairākas R izteiksmes iekšpusē j arguments. Tagad tas joprojām ir tāds pats kā iepriekš: nav neviena lietotāja tipa nosaukuma.

Bet šajā nākamajā koda rindā apskatiet pievienoto R paziņojumu (labi, Mets lika man pievienot): drukāt (.BY).

mydt [1:12, {drukāt (.BY); drukāt (.SD)}, autors = usertype]

.BY ir īpašs data.table simbols, kas tur vērtību pēc - pēc kādas slejas vai kolonnām es grupēju.

Ja palaidīsit šo kodu, kopā ar izdruku jums būs katra grupas mainīgā nosaukums.

Sharon Machlis,

Tātad tas ir ļoti vienkāršs piemērs. Es domāju, ka jūs varētu vēlēties darīt kaut ko mazliet interesantāku .SD nekā druka. Tālāk apskatīsim datu apkopošanu pa grupām, aprēķinot, kurā dienā šogad katru mēnesi bija visvairāk ceļojumu.

Šajā koda rindiņā ir viss:

mydt [Gads == "2019", .SD [kas.max (Ceļojumi)], pēc = Mēneša sākuma]

The i pirmais arguments iekavās filtrē visām rindām, kurās gads ir 2019. The j arguments ir interesanta daļa .SD. Padomā par .SD kā atsauci uz katru jūsu datu grupu. Vai arī kā Mets teica: „Tu dari j pēc pēc. Piemēram priekš cilpa. ”

Ko darīt, ja vēlaties redzēt maksimumus katram mēnesim un lietotāja tipam? Vienkārši pievienojiet vēl vienu kolonnu pēc (trešais) arguments:

mydt [Gads == "2019", .SD [kas.max (Ceļojumi)],

pēc =. (MonthStarting, usertype)]

Ir vairāki veidi, kā grupēt pa vairākām kolonnām datu.tabulā. Viens veids ir ar punktu pirms nekotētiem kolonnu nosaukumiem, kā norādīts iepriekš. Cits ir izmantot sarakstā punkta vietā, piemēram:

mydt [Gads == "2019", .SD [kas.max (Ceļojumi)],

pēc = saraksts (MonthStarting, usertype)]

Varat arī izmantot parasto bāzes R vektoru ar pēdiņām ap katras kolonnas nosaukumu.

mydt [Gads == "2019", .SD [kas.max (Ceļojumi)],

pēc = c ("MonthStarting", "usertype")]

Lai iegūtu vairāk R padomu, dodieties uz video lapu “Do More With R” vai skatiet YouTube atskaņošanas sarakstu “Do More With R”.

lejupielādējiet velosipēdu brauciena datu CSV faila paraugu, kas pievienots manam rakstam “Kā lietot .SD paketē R data.table” un video Sharon Machlis

Ceru, ka tiksimies nākamajā epizodē!