Aggregation and Restructuring data (from ”R in Action”)

the followings Introduction post on tarkoitettu r: n uusille käyttäjille.

tämä on vieraileva artikkeli Tohtori Robert I. Kabacoffilta, joka on (yhden) ensimmäisistä online R tutorials-verkkosivustoista perustaja: Quick-R. Kabacoff on äskettäin julkaissut kirjan ”R in Action”, joka tarjoaa yksityiskohtaisen läpiviennin R-kielelle, joka perustuu erilaisiin esimerkkeihin r: n ominaisuuksien havainnollistamiseksi (tietojen manipulointi, tilastolliset menetelmät, grafiikka ja niin edelleen…). Kabacoffin edellinen vierasjulkaisu esitteli tietoja.frame objects in R.

tämän blogin lukijoille ”R in Action” – kirjasta (kuten myös kaikista muista Manning publishing Housen e-kirjoista, pbookeista ja Meapeista) saa 38% alennuksen yksinkertaisesti käyttämällä koodia rblogg38 kassalle saavuttaessa.

puhukaamme nyt tietojen yhdistämisestä ja uudelleenjärjestelystä:

aggregointi ja uudelleenjärjestely

R tarjoaa useita tehokkaita menetelmiä tietojen yhdistämiseen ja muokkaamiseen. Kun yhdistät tietoja, korvaat havaintoryhmät näihin havaintoihin perustuvilla yhteenvetotilastoilla. Kun muokkaat tietoja, muutat rakennetta (rivejä ja sarakkeita), joka määrittää, miten tiedot on järjestetty. Tässä artikkelissa kuvataan erilaisia menetelmiä näiden tehtävien suorittamiseksi.

käytämme mtcars-datakehystä, joka sisältyy r: n perusasennukseen.tämä Motor Trend Magazinesta (1974) poimittu tietokokonaisuus kuvaa 34 Auton suunnittelu-ja suorituskykyominaisuuksia (Sylinterien lukumäärä, iskutilavuus, hevosvoima, mpg ja niin edelleen). Lisätietoja aineistosta on ohjeessa (mtcars).

Transpositio

transpositio (rivien ja sarakkeiden kääntäminen) on ehkä yksinkertaisin tapa muotoilla aineisto uudelleen. Käytä t () – funktiota matriisin tai tietokehyksen transponointiin. Jälkimmäisessä tapauksessa rivinimet muuttuvat muuttuviksi (sarakkeen) nimiksi. Esimerkki esitetään seuraavassa listauksessa.

Listing 1-tietokokonaisuuden saattaminen osaksi kansallista lainsäädäntöä

Listing 1 käyttää mtcars-tietokokonaisuuden osajoukkoa säästääkseen tilaa sivulla. Näet joustavamman tavan siirtää tietoja, kun tarkastelemme reshape-pakettia myöhemmin tässä artikkelissa.

Aggregointitiedot

tiedot on suhteellisen helppo romauttaa R: ssä käyttämällä yhtä tai useampaa muuttujaa ja määriteltyä funktiota. Muoto on

1
aggregate(x, by, FUN)

missä X on romahdettava data-objekti, by on luettelo muuttujista, jotka risteytetään uusien havaintojen muodostamiseksi, ja FUN on skalaarifunktio, jota käytetään laskettaessa yhteenvetotilastoja, jotka muodostavat uudet havaintoarvot.

esimerkiksi yhdistämme mtcars-tiedot sylinterien ja vaihteiden lukumäärän mukaan, palautuskeinot kullekin numeeriselle muuttujalle (katso seuraava listaus).

listaus 2 Aggregaatiotietoa

näissä tuloksissa, ryhmä.1 on Sylinterien lukumäärä (4, 6 tai ja ryhmä.2 tarkoittaa vaihteiden määrää (3, 4 tai 5). Esimerkiksi autoissa, joissa on 4 sylinteriä ja 3 vaihdetta, keskiarvo on 21,5 mailia gallonaa kohti (mpg).

kun käytetään aggregaatti () – funktiota , muuttujien on oltava luettelossa (vaikka niitä olisi vain yksi). Voit ilmoittaa ryhmille mukautetun nimen luettelon sisältä, esimerkiksi käyttämällä by=list (Group.cyl=cyl, ryhmä.hammaspyörät=hammaspyörät).

määritelty toiminto voi olla mikä tahansa sisäänrakennettu tai käyttäjän toimittama toiminto. Tämä antaa aggregaattikomennolle paljon valtaa. Mutta kun kyse on vallasta, mikään ei voita reshape-pakettia.

reshape-paketti

reshape-paketti on valtavan monipuolinen lähestymistapa sekä uudelleenjärjestelyyn että aineistojen kokoamiseen. Koska tämä monipuolisuus, se voi olla hieman haastavaa oppia.

käymme prosessin läpi hitaasti ja käytämme pientä aineistoa, jotta on selvää, mitä tapahtuu. Koska reshape ei sisälly vakioasennukseen R, sinun täytyy asentaa se kerran, käyttäen install.paketit (”reshape”).

periaatteessa” sulat ” tiedot niin, että jokainen rivi on yksilöllinen ID-muuttuja-yhdistelmä. Sitten voit” heittää ” sulanut data haluamaasi muotoon. Aikana valettu, voit koota tiedot minkä tahansa toiminnon haluat. Aineisto, jonka kanssa työskentelet, on esitetty taulukossa 1.

Taulukko 1 alkuperäinen aineisto (mydata)

tunniste

aika

X1

X2

1 1 5 6
1 2 3 5
2 1 6 1
2 2 2 4

tässä aineistossa mittaukset ovat kahden viimeisen arvot sarakkeet (5, 6, 3, 5, 6, 1, 2, ja 4). Jokainen mittaus yksilöidään id-muuttujien yhdistelmällä (tässä tapauksessa ID, aika ja se, onko mittaus X1 vai X2). Esimerkiksi ensimmäisellä rivillä mitattu arvo 5 yksilöidään yksikäsitteisesti tietämällä, että se on havainnosta (ID) 1, ajanhetkellä 1 ja muuttujalla X1.

sulaminen

kun aineisto sulatetaan, se jäsennetään muotoon, jossa jokainen mitattu muuttuja on omalla rivillään, sekä sen yksilöivään tunnistamiseen tarvittavat ID-muuttujat. Jos sulat tiedot taulukosta 1 käyttäen seuraavaa koodia

12
library(reshape)md <- melt(mydata, id=(c("id", "time")))

päädyt taulukossa 2 esitettyyn rakenteeseen.

Taulukko 2 sulanut aineisto

tunniste

aika

muuttuja

arvo

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

huomaa, että sinun on määritettävä muuttujat, joita tarvitaan kunkin mittauksen yksilöivään tunnistamiseen (ID ja aika) ja että mittausmuuttujan nimet (X1 tai X2) ilmaiseva muuttuja luodaan sinulle automaattisesti.

nyt kun tietosi ovat sulaneessa muodossa, voit muotoilla ne uudelleen mihin tahansa muotoon cast () – funktion avulla.

Casting

cast () – funktio alkaa sulatetusta datasta ja muokkaa sitä antamallasi kaavalla ja (valinnaisella) funktiolla, jota käytetään datan yhdistämiseen. Muoto on

1
newdata <- cast(md, formula, FUN)

missä MD on sulanut data, kaava kuvaa halutun lopputuloksen, ja hauska on (valinnainen) aggregointifunktio. Kaava saa muodon

1
rowvar1 + rowvar2 + … ~ colvar1 + colvar2 + …

tässä kaavassa rowvar1 + rowvar2 + … määrittelevät rivejä määrittelevien ristikkäisten muuttujien joukon ja colvar1 + colvar2 + … määrittelevät sarakkeita määrittelevien ristikkäisten muuttujien joukon. KS.esimerkkejä kuviosta 1. (klikkaa suurentaaksesi kuvaa)

Kuva 1 muokkaa dataa sula () – ja cast () – funktioilla

koska oikealla puolella olevat kaavat (d, e ja f) eivät sisällä funktiota, data muokataan uudelleen. Sen sijaan vasemmalla puolella olevat esimerkit (a, b ja c) määrittelevät keskiarvon aggregointifunktiona. Näin ollen tietoja ei ainoastaan muuteta vaan myös kootaan yhteen. Esimerkiksi, (a)antaa keskiarvot X1 ja X2 ajan kuluessa kunkin havainnon. Esimerkissä (b) annetaan X1: n ja X2: n keskiarvot aikaan 1 ja aikaan 2 laskettuna havaintojen keskiarvona. Kohdassa (c) on kunkin havainnon pistekeskiarvo ajanhetkellä 1 ja 2, keskiarvona X1 ja X2.

kuten näette, sula () – ja cast () – funktioiden tarjoama joustavuus on hämmästyttävää. On monta kertaa, kun sinun täytyy muokata tai koota tietosi ennen analysointia. Esimerkiksi, sinun tyypillisesti täytyy sijoittaa tiedot niin kutsutussa pitkässä muodossa muistuttava taulukko 2 analysoitaessa toistuvien mittaustietojen (data, jossa useita toimenpiteitä kirjataan kunkin havainnon).

Yhteenveto

R: n Luku 5 toiminnassa käydään läpi monia niistä kymmenistä matemaattisista, tilastollisista ja todennäköisyysfunktioista, jotka ovat hyödyllisiä tietojen manipuloinnissa. Tässä artikkelissa, olemme lyhyesti tarkastelleet useita tapoja koota ja uudelleen TIEDOT.

tämä artikkeli ilmestyi ensimmäisen kerran ”r in action” – kirjan luvussa 5.6, ja se on julkaistu Manning-kustantamon luvalla. Muut kirjat tässä Vakava joka saatat olla kiinnostunut ovat (Katso alussa tämän viestin alennus koodi):

  • Koneoppiminen toiminnassa Peter Harrington
  • Gnuplot in Action (Understanding Data with Graphs) Philipp K. Janert



+