Bagaimana untuk Transpose DataFrame dalam R

Bagaimana Untuk Transpose Dataframe Dalam R



Memindahkan set data ialah satu operasi sedemikian yang memperbaharui data untuk memenuhi keperluan tertentu analisis. Memindahkan set data melibatkan baris terbalik dan lajur set data, menghasilkan set data baharu dengan lajur dan baris bertukar. R menyediakan beberapa fungsi untuk menukar set data. Dalam artikel ini, kami akan membincangkan pelbagai kaedah transposing untuk DataFrames dalam R.

Contoh 1: Transpose DataFrame Menggunakan Fungsi T() dalam R

Fungsi t() ialah fungsi terbina dalam R yang digunakan untuk menukar DataFrame. Walau bagaimanapun, ia menukar DataFrame kepada matriks, jadi mana-mana lajur bukan angka diubah menjadi rentetan aksara. Pertimbangkan skrip R berikut untuk menukar 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))

row.names(MyData) = c('r1','r2','r3','r4','r5')

t(Data Saya)

Di sini, kami mengisytiharkan vektor MyData dan menetapkan data.frame() kepadanya. Kami memasukkan data sampel yang mengandungi tiga lajur dengan nilai dalam fungsi data.frame(). Selepas itu, kami menggunakan fungsi 'row.names()' dan menetapkan nama baris untuk nilai 'MyData' DataFrame. Akhir sekali, kami menukar DataFrame 'Data Saya' menggunakan fungsi t().



Output berikut menunjukkan transposisi DataFrame di mana nama baris DataFrame asal menjadi nama lajur DataFrame yang diubah, dan nama lajur DataFrame asal hilang dalam transposisi:







Contoh 2: Transpose DataFrame Menggunakan Fungsi Transpose() dalam R

Fungsi transpose() daripada pakej 'data.table' juga boleh digunakan untuk menukar DataFrame dan ia mengembalikan DataFrame. Oleh itu, kita perlu memastikan bahawa 'data.table' dipasang dalam R. Jika ia tidak dijumpai maka, kita boleh memasangnya dengan arahan berikut:

install.packages('data.table')

Kini, kita boleh mengimport pakej 'data.table' dengan mudah untuk mengakses fungsi transpose() dalam R untuk menukar DataFrame. Pertimbangkan kod R berikut di mana fungsi transpose() dipanggil untuk menukar DataFrame:



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

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


row.names(df) <- c('r1', 'r2', 'r3', 'r4', 'r5')

df

Di sini, kami mencipta DataFrame 'df' dengan tiga lajur dan lima baris di mana setiap lajur mengandungi urutan nombor dari 1 hingga 5, 6 hingga 10 dan 11 hingga 15, masing-masing. Selain itu, kami menetapkan nama baris DataFrame menggunakan fungsi row.names(). Selepas itu, kami mencetak DataFrame asal ke konsol.

DataFrame asal ditunjukkan pada skrin di sini:

Seterusnya, kami menukarkan DataFrame 'df' asal dengan menukar baris dan lajur DataFrame.

perpustakaan(data.table)

df_trans <- transpose(df)

rownames(df_trans) <- colnames(df)

colnames(df_trans) <- rownames(df)

df_trans

Untuk ini, kami mula-mula memuatkan perpustakaan 'data.table' yang menyediakan alatan untuk berfungsi dengan data jadual dalam R. Kemudian, fungsi transpose() digunakan daripada perpustakaan 'data.table'. DataFrame transposed yang terhasil diberikan kepada pembolehubah baharu iaitu 'df_t'. Selepas itu, kami menetapkan nama lajur bagi DataFrame 'df' asal sebagai nama baris kepada DataFrame 'df_trans' yang diubah menggunakan fungsi rownames(). Kemudian, nama baris bagi DataFrame “df” asal diperuntukkan sebagai nama lajur kepada DataFrame “df_trans” yang diubah menggunakan fungsi colnames().

Oleh itu, transposisi DataFrame asal dicapai dalam output. Ia mewakili setiap sel dalam DataFrame yang ditranspose di mana ia mengandungi nilai yang sama seperti sel yang sepadan dalam DataFrame asal tetapi dalam kedudukan yang berbeza disebabkan oleh transposisi.

Contoh 3: Transpose DataFrame Menggunakan Fungsi Tidyr Library Gather() dalam R

Pakej tidyr R boleh digunakan untuk menukar DataFrame. Kaedah ini berguna apabila kita ingin menukar DataFrame daripada format lebar ke panjang, dan kemudian kembali kepada format lebar dengan baris dan lajur bertukar. Ia menyediakan beberapa fungsi untuk mengubah dan menyusun semula data. Sebelum ini, kita perlu memuat turun pakej tidyr secara khusus menggunakan arahan berikut:

install.packages('tidyr')

Mari kita pertimbangkan kod R berikut. Kami menggunakan fungsi gather() pakej ini untuk mengubah DataFrame yang luas lebih lama:

perpustakaan(kemas)

n = 10

tidy_df = data.frame(

ID = c(1:n),
Peperiksaan1_Markah = c(73, 219, 86, 192, 99,
188, 72, 35, 91, 165),
Peperiksaan2_Markah = c(217, 89, 66, 334, 99,
101, 108, 233, 45, 300),
Peperiksaan3_Markah = c(39, 101, 209, 289, 176,
120, 89, 119, 199, 96))

kemas_df

Di sini, DataFrame 'lebar' ditukar kepada DataFrame 'panjang' menggunakan tidyr. Mula-mula, kami mencipta DataFrame 'tidy_df' dengan tiga lajur. Setiap lajur ini mempunyai 10 nilai.

DataFrame yang panjang ditunjukkan dalam skrin output berikut:

Kemudian, kami menghantar DataFrame 'tidy_df' ke fungsi gather() dengan operator paip '%>%'. Fungsi gather() daripada tidyr digunakan untuk mengubah 'tidy_df' menjadi DataFrame yang panjang. Fungsi gather() mengambil input dengan nama 'Peperiksaan' yang menunjukkan lajur baharu untuk menyimpan nama pembolehubah yang dicipta dalam transformasi. 'Markah' menentukan lajur yang mengumpulkan 'Peperiksaan1_Markah' dan 'Peperiksaan2_Markah' bersama-sama.

panjang <- tidy_df %>%

berkumpul (Peperiksaan, Markah,
Peperiksaan1_Markah:Peperiksaan2_Markah)


panjang

Output memaparkan DataFrame panjang ke konsol yang kini mempunyai format 'panjang' dengan tiga lajur:

Contoh 4: Transpose DataFrame Menggunakan Fungsi Pivot_Wider() dalam R

Fungsi lanjutan seterusnya yang kami gunakan untuk menukar DataFrame ialah fungsi pivot_wider(). Pivot_wider() ialah fungsi daripada pakej tidyr dalam R yang membolehkan kami mengubah DataFrame 'panjang' menjadi DataFrame 'lebar'. Fungsi ini mengambil tiga hujah utama yang dibincangkan dalam kod R berikut:

perpustakaan(kemas)

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

Di sini, kami mula-mula memuatkan pakej tidyr menggunakan fungsi library(). Kemudian, kami menetapkan sampel DataFrame dalam 'df'. DataFrame 'df' mempunyai tiga lajur yang mengandungi nilai yang berbeza, sewajarnya. Contoh DataFrame boleh dilihat dalam output berikut:

Selepas itu, fungsi pivot_wider() daripada tidyr digunakan untuk menukar 'df' kepada 'df_wide'.

df_wide <- pivot_wider(df, names_from = var, values_from = val)

df_wide

Fungsi pivot_wider() mengambil tiga hujah di sini. Pertama, ia memerlukan DataFrame 'df' untuk diubah. Kemudian, argumen names_from menetapkan nama lajur untuk digunakan untuk nama pembolehubah baharu. Akhir sekali, argumen values_from menentukan nama lajur untuk digunakan untuk nilai baharu.

Output berikut mewakili transposisi DataFrame panjang ke DataFrame lebar:

Kesimpulan

Kami menggunakan pelbagai cara untuk menukar DataFrame dalam R. Contoh pertama ditetapkan dengan kaedah terbina dalam t(). Semua contoh lain memerlukan pakej untuk diimport supaya kita boleh menggunakan fungsinya untuk transposisi DataFrame. Walau bagaimanapun, kaedah terbaik untuk digunakan bergantung pada situasi khusus dan struktur data yang anda sedang bekerjasama.