A DataFrame transzponálása R-ben

A Dataframe Transzponalasa R Ben



Az adathalmaz transzponálása az egyik ilyen művelet, amely átalakítja az adatokat, hogy megfeleljen az elemzés sajátos követelményeinek. Az adatkészlet transzponálása az adatkészlet sorainak és oszlopainak megfordítását jelenti, ami egy új adatkészletet eredményez váltott oszlopokkal és sorokkal. R biztosít néhány függvényt az adatkészlet transzponálásához. Ebben a cikkben az R-ben található DataFrames különféle transzponálási módszereivel foglalkozunk.

1. példa: Transzponálja a DataFrame-et a T() függvény segítségével R-ben

A t() függvény az R beépített függvénye, amely egy DataFrame transzponálására szolgál. A DataFrame-et azonban mátrixsá alakítja, így minden nem numerikus oszlop karakterláncokká alakul. Vegye figyelembe a következő R-szkriptet a DataFrame transzponálásához:







MyData = data.frame(c1 = c(1, 2, 3, 4, 5),

c2 = c(6; 7; 8; 9; 10),
c3 = c(11, 12, 13, 14, 15))

sor.nevek(Saját adatok) = c('r1', 'r2', 'r3', 'r4', 'r5')

t(Saját adatok)

Itt deklaráljuk a MyData vektort, és hozzárendeljük a data.frame()-t. A data.frame() függvényen belül beillesztjük a mintaadatokat, amelyek három oszlopot tartalmaznak az értékekkel. Ezt követően a „row.names()” függvényt használjuk, és beállítjuk a „MyData” DataFrame értékeinek sornevét. Végül transzponáljuk a „MyData” DataFrame-et a t() függvény segítségével.



A következő kimenet a DataFrame transzponálását mutatja, ahol az eredeti DataFrame sornevei az átültetett DataFrame oszlopneveivé válnak, és az eredeti DataFrame oszlopnevei elvesznek az átültetés során:







2. példa: Transzponálja a DataFrame-et az R-ben található Transpose() függvény használatával

A „data.table” csomagból származó transpose() függvény szintén használható DataFrame transzponálására, és egy DataFrame-et ad vissza. Ezért meg kell győződnünk arról, hogy a „data.table” telepítve van az R-ben. Ha nem található, akkor a következő paranccsal telepíthetjük:

install.packages('data.table')

Most már egyszerűen importálhatjuk a „data.table” csomagot, hogy elérjük az R-ben lévő transpose() függvényt a DataFrame transzponálásához. Tekintsük a következő R kódot, ahol a transpose() függvényt a DataFrame transzponálására hívják:



df <- data.frame(A = c(1:5),

B = c(6:10),
C = c(11:15))


sor.nevek(df) <- c('r1', 'r2', 'r3', 'r4', 'r5')

df

Itt létrehozzuk a „df” DataFrame-et három oszlopból és öt sorból, ahol minden oszlop 1-től 5-ig, 6-tól 10-ig, illetve 11-től 15-ig terjedő számsort tartalmaz. Ezenkívül a DataFrame sorneveket a row.names() függvény segítségével rendeljük hozzá. Ezt követően kinyomtatjuk az eredeti DataFrame-et a konzolra.

Az eredeti DataFrame itt látható a képernyőn:

Ezután transzponáljuk az eredeti „df” DataFrame-et a DataFrame sorainak és oszlopainak átváltásával.

könyvtár(adat.tábla)

df_transz <- transzpose(df)

sornevek(df_transz) <- oszlopnevek(df)

oszlopnevek(df_transz) <- sornevek(df)

df_trans

Ehhez először betöltjük a „data.table” könyvtárat, amely eszközöket biztosít az R-ben lévő táblázatos adatok kezeléséhez. Ezután a „data.table” könyvtárból a transpose() függvényt használjuk. Az eredményül kapott transzponált DataFrame egy új változóhoz lesz hozzárendelve, amely „df_t”. Ezt követően az eredeti „df” DataFrame oszlopneveit sornévként rendeljük a transzponált „df_trans” DataFrame-hez a rownames() függvény segítségével. Ezután az eredeti „df” DataFrame sornevei oszlopnévként vannak hozzárendelve a transzponált „df_trans” DataFrame-hez a colnames() függvény segítségével.

Így a kimenetben az eredeti DataFrame transzponálás érhető el. A transzponált DataFrame minden egyes celláját ábrázolja, amelyben ugyanazt az értéket tartalmazza, mint az eredeti DataFrame megfelelő cellája, de az átültetés miatt más pozícióban.

3. példa: Transzponálja a DataFrame-et az R Tidyr Library Gather() függvényével

Az R tidyr csomagja DataFrame transzponálására használható. Ez a módszer akkor hasznos, ha egy DataFrame-et széles formátumról hosszú formátumra, majd felcserélt sorokkal és oszlopokkal széles formátumra szeretnénk konvertálni. Számos funkciót biztosít az adatok átalakításához és átszervezéséhez. Ezt megelőzően le kell töltenünk a tidyr csomagot kifejezetten a következő paranccsal:

install.packages('tidyr')

Tekintsük a következő R kódot. Ennek a csomagnak a collection() függvényét használjuk a széles DataFrame hosszabb átültetésére:

könyvtár (rend)

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))

tidy_df

Itt egy „széles” DataFrame-et „hosszú” DataFrame-mé alakítanak át a tidyr segítségével. Először létrehozunk egy „tidy_df” DataFrame-et három oszloppal. Ezen oszlopok mindegyike 10 értékkel rendelkezik.

A hosszú DataFrame a következő kimeneti képernyőn jelenik meg:

Ezután átadjuk a „tidy_df” DataFrame-et a collection() függvénynek a „%>%” pipe operátorral. A tidyr összegyűjtése() függvénye a „tidy_df” hosszú DataFrame keretté alakítására szolgál. A collection() függvény a bemeneteket a „Exams” névvel jelzi, amely új oszlopot jelez az átalakítás során létrehozott változónevek tárolására. A „Marks” az „Exam1_Marks” és a „Exam2_Marks” oszlopot határozza meg.

hosszú <- tidy_df %>%

összegyűjteni (vizsgák, jegyek,
Exam1_Marks:Exam2_Marks)


hosszú

A kimenet a hosszú DataFrame-et jeleníti meg a konzolon, amely mostantól „hosszú” formátummal rendelkezik, három oszloppal:

4. példa: Transzponálja a DataFrame-et a Pivot_Wider() függvény segítségével R-ben

A következő speciális függvény, amelyet a DataFrame transzponálására használunk, a pivot_wider() függvény. A pivot_wider() egy függvény az R tidyr csomagjából, amely lehetővé teszi számunkra, hogy egy „hosszú” DataFrame-et „széles” DataFrame-mé alakítsunk át. A függvény három fő argumentumot vesz fel, amelyeket az R következő kódja tárgyal:

könyvtár (rend)

df <- data.frame(

id = c(1, 2, 3, 1, 2, 3),
var = c('v1', 'v1', 'v1', 'v2', 'v2', 'v2'),
érték = c(4; 5; 6; 7; 8; 9)


)

df

Itt először a tidyr csomagot töltjük be a library() függvény segítségével. Ezután beállítjuk a minta DataFrame-et „df”-ben. A „df” DataFrame három oszlopból áll, amelyek ennek megfelelően különböző értékeket tartalmaznak. A minta DataFrame a következő kimenetben látható:

Ezután a tidyr pivot_wider() függvénye a „df”-t „df_wide”-re alakítja.

df_wide <- pivot_wider(df, names_from = var, value_from = érték)

df_wide

A pivot_wider() függvény itt három argumentumot vesz fel. Először a „df” DataFrame-et kell átalakítani. Ezután a names_from argumentum beállítja az új változónevekhez használandó oszlopnevet. Végül az értékek_from argumentum megadja az új értékekhez használandó oszlopnevet.

A következő kimenet a hosszú DataFrame transzponálását mutatja a széles DataFrame-be:

Következtetés

Különféle módokat használtunk a DataFrame transzponálására R-ben. Az első példa a t() beépített metódussal van beállítva. Az összes többi példában szükség volt a csomagok importálására, hogy a függvényeiket használhassuk a DataFrame transzponálásához. A legjobb módszer azonban az adott helyzettől és adatstruktúrától függ, amellyel dolgozik.