Tie­to­ke­hys­ten muun­ta­mi­nen R-kielessä melt() helpottaa so­peu­tu­mis­ta eri­lai­siin vaa­ti­muk­siin. Monet ana­lyy­si­me­ne­tel­mät, kuten li­ne­aa­ri­set mallit ja ANOVA, suosivat pitkän muodon tietoja, koska ne ovat luon­nol­li­sem­pia ja helpompia tulkita.

Mihin R:n melt()-funktiota käytetään?

R:n melt() kuuluu reshape2 ja sitä käytetään data-kehysten uu­del­leen­jär­jes­te­lyyn, eri­tyi­ses­ti niiden muun­ta­mi­seen leveästä muodosta pitkään muotoon. Leveässä muodossa muuttujat on jär­jes­tet­ty eril­li­siin sa­rak­kei­siin, kun taas pitkä muoto tarjoaa paremman näytön ana­lyy­se­jä ja vi­sua­li­soin­te­ja varten.

R:n melt() on vält­tä­mä­tön työkalu tietojen muun­ta­mi­seen. Se on erityisen tärkeä, kun tiedot ovat saa­ta­vil­la vain leveässä muodossa, mutta tietyt analyysit tai grafiikat edel­lyt­tä­vät pitkää muotoa. Tämä tietojen uu­del­leen­jär­jes­te­ly­vaih­toeh­to lisää tie­to­ke­hys­ten jous­ta­vuut­ta ja mah­dol­lis­taa eri­lais­ten R-ana­lyy­si­työ­ka­lu­jen ja vi­sua­li­soin­ti­kir­jas­to­jen op­ti­maa­li­sen käytön.

Mikä on R:n melt()-funktion syntaksi?

R:n melt() -funktiota voidaan mukauttaa käyt­tä­mäl­lä erilaisia ar­gu­ment­te­ja.

melt(data.frame, na.rm = FALSE, value.name = "name", id.vars = 'columns')
R
  • data.frame: Tämä viittaa data-kehykseen, jonka haluatte uu­del­leen­jär­jes­tää
  • na.rm: Va­lin­nai­nen ar­gu­ment­ti, jonka ole­tusar­vo on FALSE
  • value.name: Tämän va­lin­nai­sen ar­gu­men­tin avulla voit nimetä sarakkeen, joka sisältää uu­del­leen­jär­jes­tet­ty­jen muut­tu­jien arvot uudessa tie­to­jou­kos­sa
  • id.vars: Va­lin­nai­nen ar­gu­ment­ti, joka ilmaisee, mitkä sarakkeet on säi­ly­tet­tä­vä tun­nis­tei­na. columns käytetään pai­kan­pi­tä­jä­nä.

Kat­so­taan­pa esi­merk­kiä:

df <- data.frame(ID = 1:3, A = c(4, 7, NA), B = c(8, NA, 5))
R

Tuloksena oleva tie­to­ra­ken­ne näyttää seu­raa­val­ta:

ID    A      B
1  1     4      8
2  2     7  NA
3  3  NA     5
R

Nyt käytämme melt() ja muunnamme data-kehyksen pitkään muotoon:

melted_df <- melt(df, na.rm = FALSE, value.name = "Value", id.vars = "ID")
R

Uu­del­leen­jär­jes­tet­ty tie­to­ra­ken­ne melted_df näyttää tältä:

ID  variable  Value
1  1                A              4
2  2                A              7
3  3                A          NA
4  1                B              8
5  2                B          NA
6  3                B             5
R

Tuloksena on pitkään muotoon uu­del­leen­jär­jes­tet­ty tie­to­ke­hys. Sarake ID on säi­ly­tet­ty tun­nis­tee­na, sarake variable sisältää aiemmat sa­rak­kei­den nimet (A ja B) ja sarake Value sisältää vastaavat elementit.na.rm = FALSE vuoksi joitakin arvoja puuttuu (merkitty kohdalla NA).

Kuinka poistaa NA-merkinnät R:n melt()-ko­men­nol­la

Voit poistaa puuttuvat arvot helposti data-ke­hyk­sis­tä vaih­toeh­dol­la na.rm=True.

Mää­ri­tel­lään uusi tie­to­ke­hys:

df <- data.frame(ID = 1:4, A = c(3, 8, NA, 5), B = c(6, NA, 2, 9), C = c(NA, 7, 4, 1))
R

Tie­to­ke­hys on seu­raa­van­lai­nen:

ID    A     B      C
1   1     3     6    NA
2   2     8   NA      7
3   3   NA    2       4
4   4     5     9       1
R

Nyt ra­ken­nam­me data-kehyksen uudelleen käyt­tä­mäl­lä melt():

melted_df <- melt(df, na.rm = TRUE, value.name = "Value", id.vars = "ID")
R

Uusi tie­to­ke­hys melted_df on nyt pitkässä muodossa ilman NA arvoa:

ID    variable  Value
1    1            A        3
2    2            A        8
3    4            A        5
4    1            B        6
5    3            B        2
6    4            B        9
7    2           C        7
8    3           C        4
9    4           C        1
R
Vinkki

Jos haluat oppia merk­ki­jo­no­jen kä­sit­te­lys­tä R-kielellä, tutustu R substring() - ja R paste() -oppaaseen di­gi­taa­li­ses­sa op­paas­sam­me.

Siirry pää­va­lik­koon