Kā transponēt DataFrame R

Ka Transponet Dataframe R



Datu kopas transponēšana ir viena no šādām darbībām, kas pārveido datus, lai tie atbilstu konkrētajām analīzes prasībām. Datu kopas transponēšana ietver apgrieztas datu kopas rindas un kolonnas, kā rezultātā tiek izveidota jauna datu kopa ar pārslēgtām kolonnām un rindām. R nodrošina dažas funkcijas datu kopas transponēšanai. Šajā rakstā mēs apskatīsim dažādas DataFrames transponēšanas metodes R.

1. piemērs: Transponējiet DataFrame, izmantojot funkciju T() R

Funkcija t() ir R iebūvēta funkcija, ko izmanto DataFrame transponēšanai. Tomēr tas pārveido DataFrame par matricu, tāpēc jebkura kolonna, kas nav skaitliska, tiek pārveidota par rakstzīmju virknēm. Apsveriet šādu R skriptu, lai transponētu DataFrame:







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

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

rindu nosaukumi(Mani dati) = c('r1', 'r2', 'r3', 'r4', 'r5')

t (Mani dati)

Šeit mēs deklarējam MyData vektoru un piešķiram tam data.frame(). Mēs ievietojam datu paraugu, kas satur trīs kolonnas ar vērtībām funkcijā data.frame(). Pēc tam mēs izmantojam funkciju “row.names()” un iestatām rindu nosaukumus “MyData” DataFrame vērtībām. Visbeidzot, mēs transponējam “MyData” DataFrame, izmantojot funkciju t ().



Šī izvade parāda DataFrame transponēšanu, kur sākotnējā DataFrame rindu nosaukumi kļūst par transponētā DataFrame kolonnu nosaukumiem, un sākotnējā DataFrame kolonnu nosaukumi tiek zaudēti transponēšanas laikā:







2. piemērs. Transponējiet DataFrame, izmantojot funkciju Transpose() R

Funkciju transpose() no pakotnes “data.table” var izmantot arī, lai transponētu DataFrame, un tā atgriež DataFrame. Tāpēc mums ir jāpārliecinās, ka “data.table” ir instalēts R. Ja tas netiek atrasts, mēs varam to instalēt ar šādu komandu:

install.packages('data.table')

Tagad mēs varam viegli importēt pakotni “data.table”, lai piekļūtu transponēšanas () funkcijai R un transponētu DataFrame. Apsveriet šādu R kodu, kurā funkcija transpone () tiek izsaukta, lai transponētu DataFrame:



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

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


rindu nosaukumi(df) <- c('r1', 'r2', 'r3', 'r4', 'r5')

df

Šeit mēs izveidojam “df” DataFrame ar trim kolonnām un piecām rindām, kur katrā kolonnā ir attiecīgi skaitļu secība no 1 līdz 5, 6 līdz 10 un 11 līdz 15. Turklāt mēs piešķiram DataFrame rindu nosaukumus, izmantojot funkciju row.names(). Pēc tam mēs izdrukājam sākotnējo DataFrame konsolē.

Oriģinālais DataFrame ir parādīts ekrānā šeit:

Pēc tam mēs transponējam sākotnējo “df” DataFrame, pārslēdzot DataFrame rindas un kolonnas.

bibliotēka (dati.tabula)

df_trans <- transpone(df)

rindu nosaukumi(df_trans) <- rindu nosaukumi(df)

kolonnu nosaukumi(df_trans) <- rindu nosaukumi(df)

df_trans

Šim nolūkam mēs vispirms ielādējam bibliotēku “data.table”, kas nodrošina rīkus darbam ar R tabulas datiem. Pēc tam tiek izmantota funkcija transpone() no bibliotēkas “data.table”. Rezultātā transponētais DataFrame tiek piešķirts jaunam mainīgajam, kas ir “df_t”. Pēc tam mēs piešķiram sākotnējā “df” DataFrame kolonnu nosaukumus kā rindu nosaukumus transponētajam “df_trans” DataFrame, izmantojot funkciju rownames (). Pēc tam sākotnējā “df” DataFrame rindu nosaukumi tiek piešķirti kā kolonnu nosaukumi transponētajam “df_trans” DataFrame, izmantojot funkciju colnames ().

Tādējādi izvadē tiek panākta sākotnējā DataFrame transponēšana. Tas attēlo katru šūnu transponētajā DataFrame, kurā tā satur tādu pašu vērtību kā atbilstošajā šūnā sākotnējā DataFrame, bet citā pozīcijā transponēšanas dēļ.

3. piemērs: Transponējiet DataFrame, izmantojot Tidyr bibliotēkas Gather() funkciju R

R tidyr pakotni var izmantot DataFrame transponēšanai. Šī metode ir noderīga, ja mēs vēlamies pārveidot DataFrame no platā formāta uz garo formātu un pēc tam atpakaļ uz plato formātu ar apmainītām rindām un kolonnām. Tas nodrošina vairākas funkcijas, lai pārveidotu un reorganizētu datus. Pirms tam mums ir jālejupielādē tidyr pakotne, izmantojot šo komandu:

install.packages('tidyr')

Apskatīsim šādu R kodu. Mēs izmantojam šīs pakotnes funkciju collection(), lai ilgāk transponētu plašo DataFrame:

bibliotēka (kopība)

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

Šeit “plašs” DataFrame tiek pārveidots par “garu” DataFrame, izmantojot tidyr. Pirmkārt, mēs izveidojam “tidy_df” DataFrame ar trim kolonnām. Katrā no šīm kolonnām ir 10 vērtības.

Garais DataFrame tiek parādīts šādā izvades ekrānā:

Pēc tam mēs nododam “tidy_df” DataFrame funkcijai collection() ar caurules operatoru “%>%”. Funkcija collection() no tidyr tiek izmantota, lai pārveidotu “tidy_df” garā DataFrame. Funkcija apkopot() ņem ievadi ar nosaukumu “Exams”, kas norāda uz jaunu kolonnu, kurā atrodas transformācijā izveidotie mainīgo nosaukumi. “Atzīmes” norāda kolonnu, kurā tiek apkopoti “Exam1_Marks” un “Exam2_Marks”.

garš <- tidy_df %>%

savākt (eksāmeni, atzīmes,
Exam1_Marks:Exam2_Marks)


garš

Izvade parāda garo DataFrame konsolei, kurai tagad ir “garais” formāts ar trim kolonnām:

4. piemērs. Transponējiet DataFrame, izmantojot Pivot_Wider() funkciju R

Nākamā uzlabotā funkcija, ko izmantojam DataFrame transponēšanai, ir funkcija pivot_wider(). Pivot_wider () ir funkcija no tidyr pakotnes R, kas ļauj mums pārveidot “garu” DataFrame par “plašu” datu rāmi. Funkcijai ir trīs galvenie argumenti, kas ir apspriesti šajā R kodā:

bibliotēka (kopība)

df <- data.frame(

id = c(1, 2, 3, 1, 2, 3),
var = c('v1', 'v1', 'v1', 'v2', 'v2', 'v2'),
vērtība = c(4, 5, 6, 7, 8, 9)


)

df

Šeit mēs vispirms ielādējam tidyr pakotni, izmantojot funkciju bibliotēka (). Pēc tam mēs iestatām DataFrame paraugu “df”. “df” DataFrame ir trīs kolonnas, kurās attiecīgi ir dažādas vērtības. DataFrame paraugu var redzēt šādā izvadā:

Pēc tam pivot_wider() funkcija no tidyr tiek izmantota, lai pārveidotu “df” par “df_wide”.

df_wide <- pivot_wider(df, nosaukumi_no = var, vērtības_no = val)

df_wide

Funkcijai pivot_wider() šeit ir trīs argumenti. Pirmkārt, ir nepieciešams pārveidot “df” DataFrame. Pēc tam arguments names_from iestata kolonnas nosaukumu, kas tiks izmantots jaunajiem mainīgo nosaukumiem. Visbeidzot, arguments value_from norāda kolonnas nosaukumu, kas jāizmanto jaunajām vērtībām.

Šī izvade atspoguļo garā DataFrame transponēšanu plašajā DataFrame:

Secinājums

Mēs izmantojām dažādus veidus, kā transponēt DataFrame R. Pirmais piemērs ir iestatīts ar iebūvēto metodi t(). Visiem pārējiem piemēriem pakotnes bija jāimportē, lai mēs varētu izmantot to funkcijas DataFrame transponēšanai. Tomēr labākā metode ir atkarīga no konkrētās situācijas un datu struktūras, ar kuru strādājat.