followings innledende innlegg er ment for nye brukere Av R. det omhandler restrukturering av data: hva det er og hvordan du utfører det ved hjelp av base r funksjoner og {omforme} pakken.
Dette er en gjest artikkel Av Dr. Robert I. Kabacoff, grunnleggeren av (en av) de første Online r tutorials nettsteder: Quick-R. Kabacoff har nylig utgitt boken «R in Action», og gir en detaljert gjennomgang For R-språket basert på ulike eksempler for å illustrere Rs funksjoner (datamanipulering, statistiske metoder, grafikk og så videre…). Den forrige gjest innlegg Av Kabacoff innført data.ramme objekter I R.
for lesere av denne bloggen, det er en 38% rabatt på» R In Action » bok (samt alle andre ebøker, pBooks og MEAPs På Manning publishing house), bare ved å bruke koden rblogg38 når nå kassa.
la oss nå snakke Om Aggregering og Restrukturering av data I R:
Aggregering Og Restrukturering
R gir en rekke kraftige metoder for aggregering og omforming av data. Når du samler data, erstatter du grupper med observasjoner med sammendragsstatistikk basert på disse observasjonene. Når du omformer data, kan du endre strukturen (rader og kolonner) bestemme hvordan dataene er organisert. Denne artikkelen beskriver en rekke metoder for å utføre disse oppgavene.
vi bruker mtcars-datarammen som følger med grunninstallasjonen Av R. dette datasettet, hentet fra Motor Trend magazine (1974), beskriver design og ytelsesegenskaper (antall sylindere, forskyvning, hestekrefter, mpg og så videre) for 34 biler. Hvis du vil vite mer om datasettet, kan du se hjelp(mtcars).
Transponere
transponere (reversere rader og kolonner) er kanskje den enkleste metoden for å omforme et datasett. Bruk t () – funksjonen til å transponere en matrise eller en dataramme. I sistnevnte tilfelle blir radnavn variable (kolonne) navn. Et eksempel er presentert i neste oppføring.
Oppføring 1 Transponering av et datasett
Oppføring 1 bruker et delsett av mtcars-datasettet for å spare plass på siden. Du vil se en mer fleksibel måte å transponere data på når vi ser på omskapingspakken senere i denne artikkelen.
Aggregering av data
det er relativt enkelt å kollapse data I R ved hjelp av en eller flere variabler og en definert funksjon. Formatet er
1 |
aggregate(x, by, FUN) |
hvor x er dataobjektet som skal kollapses, er en liste over variabler som skal krysses for å danne de nye observasjonene, OG MORO er skalarfunksjonen som brukes til å beregne sammendragsstatistikk som vil utgjøre de nye observasjonsverdiene.
som et eksempel vil vi samle mtcars-dataene etter antall sylindere og gir, retur betyr på hver av de numeriske variablene(se neste liste).
Oppføring 2 Aggregerende data
I disse resultatene, Gruppe.1 representerer antall sylindere (4, 6 eller Og Gruppe.2 representerer antall gir (3, 4 eller 5). For eksempel har biler med 4 sylindere og 3 gir et gjennomsnitt på 21,5 miles per gallon (mpg).
når du bruker aggregat () – funksjonen, må by-variablene være i en liste (selv om det bare er en). Du kan angi et egendefinert navn for gruppene fra listen, for eksempel ved hjelp av by = list (Group.cyl=cyl, Gruppe.gears=gear).
den angitte funksjonen kan være en innebygd eller bruker-gitt funksjon. Dette gir den samlede kommandoen mye makt. Men når det kommer til makt, slår ingenting omformingspakken.
reshape-pakken
reshape-pakken er en enormt allsidig tilnærming til både restrukturering og aggregering av datasett. På grunn av denne allsidigheten kan det være litt utfordrende å lære.
vi går gjennom prosessen sakte og bruker et lite datasett slik at det er klart hva som skjer. Fordi reshape ikke er inkludert i standardinstallasjonen Av R, må du installere den en gang, ved hjelp av install.pakker («omforme»).
I Utgangspunktet vil du» smelte » data slik at hver rad er en unik ID-variabel kombinasjon. Da vil du «kaste» de smeltede dataene i hvilken som helst form du ønsker. Under kastet kan du samle dataene med hvilken som helst funksjon du ønsker. Datasettet du skal jobbe med, vises i tabell 1.
Tabell 1 det opprinnelige datasettet (mydata)
ID |
Tid |
X1 |
X2 |
1 | 1 | 5 | 6 |
1 | 2 | 3 | 5 |
2 | 1 | 6 | 1 |
2 | 2 | 2 | 4 |
i dette datasettet er målingene verdiene i de to siste kolonner (5, 6, 3, 5, 6, 1, 2, og 4). Hver måling er unikt identifisert av EN kombinasjon AV ID-variabler (I DETTE tilfellet ID, Tid, og om målingen Er På X1 Eller X2). Den målte verdien 5 i den første raden identifiseres for eksempel ved å vite at den er fra observasjon (ID) 1, Ved tid 1 og på variabel X1.
Smelter
når du smelter et datasett, omstrukturerer du det til et format der hver målte variabel er i sin egen rad, sammen MED ID-variablene som trengs for å identifisere den unikt. Hvis du smelter dataene fra tabell 1, bruker du følgende kode
12 |
library(reshape)md <- melt(mydata, id=(c("id", "time"))) |
Du ender opp med strukturen vist i tabell 2.
Tabell 2 det smeltede datasettet
ID |
Tid |
Variabel |
Verdi |
1 | 1 | X1 | 5 |
1 | 2 | X1 | 3 |
2 | 1 | X1 | 6 |
2 | 2 | X1 | 2 |
1 | 1 | X2 | 6 |
1 | 2 | X2 | 5 |
2 | 1 | X2 | 1 |
2 | 2 | X2 | 4 |
Merk at du må angi variablene som trengs for å identifisere hver måling unikt (ID og Tid), og at variabelen som angir målvariabelnavnene (X1 eller X2), opprettes automatisk for deg.
Nå som du har dataene dine i smeltet form, kan du omarbeide det i hvilken som helst form, ved hjelp av cast () – funksjonen.
Casting
cast () – funksjonen starter med smeltede data og omformer den ved hjelp av en formel du oppgir og en (valgfri) funksjon som brukes til å samle dataene. Formatet er
1 |
newdata <- cast(md, formula, FUN) |
hvor md er smeltet data, beskriver formel ønsket sluttresultat, OG MORO er (valgfritt) aggregeringsfunksjonen. Formelen tar form
1 |
rowvar1 + rowvar2 + … ~ colvar1 + colvar2 + … |
i denne formelen definerer rowvar1 + rowvar2 + … settet med kryssede variabler som definerer radene, og colvar1 + colvar2 + … definerer settet med kryssede variabler som definerer kolonnene. Se eksemplene i figur 1. (klikk for å forstørre bildet)
Figur 1 Omforming av data med funksjonene melt() og cast ()
fordi formlene på høyre side (d, e og f) ikke inkluderer en funksjon, blir dataene omformet. Eksemplene på venstre side (a, b og c) angir derimot gjennomsnittet som en aggregeringsfunksjon. Dermed blir dataene ikke bare omformet, men også aggregert. For eksempel gir (a) middelene På X1 og X2 i gjennomsnitt over tid for hver observasjon. Eksempel (b) gir gjennomsnittlig score På X1 Og X2 Ved Tid 1 og tid 2, i gjennomsnitt over observasjoner. I (c) har du gjennomsnittlig poengsum for hver observasjon På Tid 1 Og tid 2, i gjennomsnitt Over X1 Og X2.
som du kan se, er fleksibiliteten til funksjonene melt() og cast() fantastisk. Det er mange ganger når du må omforme eller aggregere dataene dine før analyse. For eksempel må du vanligvis plassere dataene i det som kalles langt format som ligner på tabell 2 når du analyserer gjentatte måldata (data der flere mål registreres for hver observasjon).
Sammendrag
Kapittel 5 I R i Aksjon gjennomgår mange av dusinvis av matematiske, statistiske og sannsynlighetsfunksjoner som er nyttige for å manipulere data. I denne artikkelen har vi kort utforsket flere måter å samle og restrukturere data på.
denne artikkelen dukket først opp som kapittel 5.6 fra Boken «R in action», og er utgitt med tillatelse fra Manning publishing house. Andre bøker i denne alvorlige som du kan være interessert i er (se begynnelsen av dette innlegget for en rabattkode):
- Maskinlæring I Aksjon Av Peter Harrington
- Gnuplot I Aksjon (Forstå Data Med Grafer) Av Philipp K. Janert