Tietojoukon transponointi on yksi tällainen toimenpide, joka muuttaa tiedot vastaamaan analyysin erityisvaatimuksia. Tietojoukon transponointi sisältää käänteisiä tietojoukon rivejä ja sarakkeita, mikä johtaa uuteen tietojoukkoon, jossa on vaihdettuja sarakkeita ja rivejä. R tarjoaa joitain toimintoja tietojoukon transponoimiseksi. Tässä artikkelissa käsittelemme R:n DataFrame-kehyksien erilaisia transponointimenetelmiä.
Esimerkki 1: Transponoi DataFrame käyttämällä T()-funktiota R:ssä
Funktio t() on R:n sisäänrakennettu funktio, jota käytetään DataFrame-kehyksen transponointiin. Se kuitenkin muuntaa DataFramen matriisiksi, joten mikä tahansa ei-numeerinen sarake muunnetaan merkkijonoiksi. Harkitse seuraavaa R-komentosarjaa DataFramen transponoimiseksi:
Omat tiedot = data.frame(c1 = c(1, 2, 3, 4, 5),
c2 = c(6, 7, 8, 9, 10),
c3 = c(11, 12, 13, 14, 15))
rivi.nimet(Omat tiedot) = c('r1','r2','r3','r4','r5')
t(Omat tiedot)
Tässä määritetään MyData-vektori ja määritetään data.frame() sille. Lisäämme näytetiedot, jotka sisältävät kolme saraketta data.frame()-funktion arvoilla. Sen jälkeen käytämme 'row.names()'-funktiota ja asetamme rivien nimet 'MyData' DataFrame -tietokehyksen arvoille. Lopuksi transponoimme 'MyData' DataFrame -kehyksen käyttämällä t()-funktiota.
Seuraava tulos näyttää DataFramen transponoinnin, jossa alkuperäisen DataFramen rivinimistä tulee transponoidun DataFramen sarakkeiden nimet ja alkuperäisen DataFramen sarakkeiden nimet menetetään transponoinnissa:
Esimerkki 2: Transponoi DataFrame käyttämällä Transpose()-funktiota R:ssä
Transpose()-funktiota 'data.table'-paketista voidaan käyttää myös DataFrame-kehyksen transponointiin, ja se palauttaa DataFramen. Siksi meidän on varmistettava, että 'data.table' on asennettu R:hen. Jos sitä ei löydy, voimme asentaa sen seuraavalla komennolla:
install.packages('data.table')Nyt voimme helposti tuoda 'data.table'-paketin käyttääksemme transpose()-funktiota R:ssä DataFramen transponoimiseksi. Harkitse seuraavaa R-koodia, jossa transpose()-funktio kutsutaan transponoimaan DataFrame:
df <- data.frame(A = c(1:5),
B = c(6:10),
C = c(11:15))
rivinimet(df) <- c('r1', 'r2', 'r3', 'r4', 'r5')
df
Täällä luomme 'df' DataFrame -kehyksen, jossa on kolme saraketta ja viisi riviä, joissa jokainen sarake sisältää numerosarjan 1 - 5, 6 - 10 ja 11 - 15. Lisäksi annamme DataFrame-rivien nimet row.names()-funktiolla. Tämän jälkeen tulostamme alkuperäisen DataFramen konsoliin.
Alkuperäinen DataFrame näkyy näytöllä tässä:
Seuraavaksi transponoimme alkuperäisen 'df' DataFramen vaihtamalla DataFramen rivejä ja sarakkeita.
kirjasto (data.taulukko)df_trans <- transponoi(df)
rivinimet(df_trans) <- sarakkeenimet(df)
kolanimet(df_trans) <- rivinimet(df)
df_trans
Tätä varten lataamme ensin 'data.table'-kirjaston, joka tarjoaa työkalut taulukkotietojen käsittelyyn R:ssä. Sitten käytetään transpose()-funktiota 'data.table'-kirjastosta. Tuloksena oleva transponoitu DataFrame määritetään uudelle muuttujalle, joka on 'df_t'. Tämän jälkeen annamme alkuperäisen 'df' DataFrame -tietokehyksen sarakkeiden nimet rivinimiksi transponoidulle 'df_trans' DataFramelle käyttämällä rownames()-funktiota. Sitten alkuperäisen 'df' DataFramen rivien nimet määritetään sarakkeiden nimiksi transponoidulle 'df_trans' DataFramelle käyttämällä colnames()-funktiota.
Siten alkuperäinen DataFrame-transponointi saavutetaan lähdössä. Se edustaa jokaista solua transponoidussa DataFramessa, jossa se sisältää saman arvon kuin vastaava solu alkuperäisessä DataFramessa, mutta eri paikassa transponoinnin vuoksi.
Esimerkki 3: Transponoi DataFrame käyttämällä Tidyr Library Gather() -funktiota R:ssä
R:n tidyr-pakettia voidaan käyttää DataFrame-kehyksen transponointiin. Tämä menetelmä on hyödyllinen, kun haluamme muuntaa DataFrame-kehyksen laajasta muotoon pitkäksi ja sitten takaisin laajamuotoiseksi riveillä ja sarakkeilla vaihdetuilla. Se tarjoaa useita toimintoja tietojen muuntamiseen ja uudelleenjärjestelyyn. Ennen tätä meidän on ladattava tidyr-paketti erityisesti käyttämällä seuraavaa komentoa:
install.packages('tidyr')Tarkastellaan seuraavaa R-koodia. Käytämme tämän paketin collection()-funktiota leveän DataFramen transponoimiseen pidempään:
kirjasto (siivous)n = 10
tidy_df = data.frame(
ID = c(1:n),
Exam1_Marks = c(73, 219, 86, 192, 99,
188, 72, 35, 91, 165),
Exam2_Marks = c(217, 89, 66, 334, 99,
101, 108, 233, 45, 300),
Exam3_Marks = c(39, 101, 209, 289, 176,
120, 89, 119, 199, 96))
siisti_df
Tässä 'leveä' DataFrame muunnetaan 'pitkäksi' DataFrameksi käyttämällä tidyriä. Ensin luodaan 'tidy_df' DataFrame, jossa on kolme saraketta. Jokaisella näistä sarakkeista on 10 arvoa.
Pitkä DataFrame näkyy seuraavassa tulostusnäytössä:
Sitten välitämme 'tidy_df' DataFrame -funktiolle collection()-funktiolle pipe-operaattorilla '%>%'. Tidyr:n collection()-funktiota käytetään muuttamaan 'tidy_df' pitkäksi datakehykseksi. Kokoa()-funktio ottaa syötteitä 'Exams'-nimellä, joka ilmaisee uuden sarakkeen, joka sisältää muunnoksessa luotujen muuttujien nimet. 'Marks' määrittää sarakkeen, joka kokoaa 'Exam1_Marks' ja 'Exam2_Marks' yhteen.
pitkä <- tidy_df %>%kerätä (kokeet, arvosanat,
Exam1_Marks:Exam2_Marks)
pitkä
Tulos näyttää pitkän DataFramen konsoliin, jossa on nyt 'pitkä' muoto kolmella sarakkeella:
Esimerkki 4: Transponoi DataFrame käyttämällä Pivot_Wider()-funktiota R:ssä
Seuraava lisätoiminto, jota käytämme DataFramen transponoimiseen, on pivot_wider()-funktio. Pivot_wider() on R:n tidyr-paketin funktio, jonka avulla voimme muuntaa 'pitkän' DataFramen 'leveäksi' datakehykseksi. Funktiolla on kolme pääargumenttia, joita käsitellään seuraavassa R:n koodissa:
kirjasto (siivous)df <- data.frame(
id = c(1, 2, 3, 1, 2, 3),
var = c('v1', 'v1', 'v1', 'v2', 'v2', 'v2'),
val = c(4, 5, 6, 7, 8, 9)
)
df
Täällä lataamme ensin tidyr-paketin kirjasto()-funktiolla. Sitten asetamme näytetietokehyksen 'df'. 'df' DataFrame sisältää kolme saraketta, jotka sisältävät vastaavasti erilaisia arvoja. DataFrame-näyte näkyy seuraavassa lähdössä:
Sen jälkeen pivot_wider()-funktiota tidyristä käytetään muuttamaan 'df' muotoon 'df_wide'.
df_wide <- pivot_wider(df, names_from = var, value_from = val)df_wide
Pivot_wider()-funktiolla on kolme argumenttia. Ensinnäkin 'df' DataFrame muunnetaan. Sitten argumentti names_from asettaa sarakkeen nimen, jota käytetään uusien muuttujien nimissä. Lopuksi argumentti Values_from määrittää uusille arvoille käytettävän sarakkeen nimen.
Seuraava tulos edustaa pitkän DataFramen transponointia leveäksi DataFrameksi:
Johtopäätös
Käytimme useita tapoja transponoida DataFrame R:ssä. Ensimmäinen esimerkki on asetettu sisäänrakennetulla menetelmällä t(). Kaikki muut esimerkit vaativat paketit tuotavaksi, jotta voimme käyttää niiden toimintoja DataFrame-transponoinnissa. Paras menetelmä riippuu kuitenkin tilanteesta ja tietorakenteesta, jonka kanssa työskentelet.