R'de DataFrame Nasıl Transpoze Edilir

R De Dataframe Nasil Transpoze Edilir



Bir veri kümesini aktarmak, analizin belirli gereksinimlerini karşılamak için verileri yeniden düzenleyen böyle bir işlemdir. Bir veri kümesinin transpoze edilmesi, veri kümesinin ters çevrilmiş satırlarını ve sütunlarını içerir ve bu da anahtarlanmış sütunlar ve satırlar içeren yeni bir veri kümesiyle sonuçlanır. R, bir veri kümesini transpoze etmek için bazı işlevler sağlar. Bu yazıda, R'deki DataFrame'ler için çeşitli aktarma yöntemlerini ele alacağız.

Örnek 1: R'de T() İşlevini Kullanarak DataFrame'i Transpoze Edin

t() işlevi, bir DataFrame'i transpoze etmek için kullanılan yerleşik bir R işlevidir. Ancak DataFrame'i bir matrise dönüştürür, böylece sayısal olmayan tüm sütunlar karakter dizilerine dönüştürülür. DataFrame'i transpoze etmek için aşağıdaki R betiğini göz önünde bulundurun:







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(Verilerim) = c('r1','r2','r3','r4','r5')

t(Verilerim)

Burada MyData vektörünü ilan ediyoruz ve data.frame()'i ona atıyoruz. Data.frame() fonksiyonu içindeki değerlere sahip üç sütun içeren örnek verileri ekliyoruz. Bundan sonra “row.names()” fonksiyonunu kullanıyoruz ve “MyData” DataFrame değerleri için satır isimlerini belirliyoruz. Son olarak, t() işlevini kullanarak “MyData” DataFrame'i aktarıyoruz.



Aşağıdaki çıktı, orijinal DataFrame'in satır adlarının, aktarılan DataFrame'in sütun adları haline geldiği ve orijinal DataFrame'in sütun adlarının aktarımda kaybolduğu DataFrame'in transpozisyonunu gösterir:







Örnek 2: R'de Transpose() İşlevini Kullanarak DataFrame'i Transpoze Edin

'data.table' paketindeki transpose() işlevi, bir DataFrame'i transpoze etmek için de kullanılabilir ve bir DataFrame döndürür. Bu nedenle “data.table” dosyasının R'de kurulu olduğundan emin olmalıyız. Bulunmazsa aşağıdaki komutla kurabiliriz:

install.packages('veri.tablo')

Artık, DataFrame'i transpoze etmek üzere R'deki transpose() işlevine erişmek için “data.table” paketini kolayca içe aktarabiliriz. DataFrame'i devrik yapmak için transpose() işlevinin çağrıldığı aşağıdaki R kodunu göz önünde bulundurun:



df <- veri.çerçeve(A = c(1:5),

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


satır.adları(df) <- c('r1', 'r2', 'r3', 'r4', 'r5')

df

Burada, her sütunun sırasıyla 1'den 5'e, 6'dan 10'a ve 11'den 15'e kadar bir sayı dizisini içerdiği üç sütun ve beş satırdan oluşan “df” DataFrame'i oluşturuyoruz. Ek olarak, row.names() işlevini kullanarak DataFrame satır adlarını atarız. Bundan sonra, orijinal DataFrame'i konsola yazdırıyoruz.

Orijinal DataFrame burada ekranda gösterilmektedir:

Ardından, DataFrame'in satırlarını ve sütunlarını değiştirerek orijinal 'df' DataFrame'in transpozesini yaparız.

kitaplık(veri.tablo)

df_trans <- devrik(df)

satır adları(df_trans) <- sütun adları(df)

colnames(df_trans) <- satıradları(df)

df_trans

Bunun için öncelikle R de tabular verilerle çalışacak araçları sağlayan “data.table” kütüphanesini yüklüyoruz. Daha sonra “data.table” kütüphanesinden transpose() fonksiyonu kullanılıyor. Ortaya çıkan devrik DataFrame, “df_t” olan yeni bir değişkene atanır. Ardından, orijinal “df” DataFrame'in sütun adlarını, satır adları olarak aktarılan “df_trans” DataFrame'e rownames() işlevini kullanarak atarız. Ardından, orijinal 'df' DataFrame'in satır adları, colnames() işlevi kullanılarak devrik 'df_trans' DataFrame'e sütun adları olarak atanır.

Böylece, çıktıda orijinal DataFrame transpozisyonu elde edilir. Orijinal DataFrame'deki karşılık gelen hücreyle aynı değeri içerdiği, ancak aktarım nedeniyle farklı bir konumda olduğu, aktarılan DataFrame'deki her bir hücreyi temsil eder.

Örnek 3: R'de Tidyr Library Gather() İşlevini Kullanarak DataFrame'i Transpoze Edin

R'nin derli toplu paketi, bir DataFrame'i transpoze etmek için kullanılabilir. Bu yöntem, bir DataFrame'i geniş formattan uzun formata ve ardından değiştirilen satırlar ve sütunlarla tekrar geniş formata dönüştürmek istediğimizde kullanışlıdır. Verileri dönüştürmek ve yeniden düzenlemek için çeşitli işlevler sağlar. Bundan önce, özellikle aşağıdaki komutu kullanarak timberr paketini indirmemiz gerekiyor:

install.packages('düzenli')

Aşağıdaki R kodunu ele alalım. Geniş DataFrame'i daha uzun süre transpoze etmek için bu paketin topla() işlevini kullanıyoruz:

kütüphane(düzenli)

n = 10

düzenli_df = veri.çerçeve(

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

düzenli_df

Burada 'geniş' bir DataFrame, Tiddr kullanılarak 'uzun' bir DataFrame'e dönüştürülür. İlk önce üç sütunlu bir “tidy_df” DataFrame oluşturuyoruz. Bu sütunların her biri 10 değere sahiptir.

Uzun DataFrame, aşağıdaki çıktı ekranında gösterilir:

Daha sonra “tidy_df” DataFrame'i “%>%” pipe operatörü ile Collect() fonksiyonuna aktarıyoruz. 'tidy_df'yi uzun bir DataFrame'e dönüştürmek için Tiddr'den Collect() işlevi kullanılır. Collect() işlevi, dönüşümde oluşturulan değişken adlarını tutmak için yeni bir sütunu belirten 'Muayeneler' adıyla girdiler alır. 'Marks', 'Exam1_Marks' ve 'Exam2_Marks' öğelerini bir araya toplayan sütunu belirtir.

uzun <- timber_df %>%

toplamak(Sınavlar, Notlar,
Exam1_Marks:Sınav2_Marks)


uzun

Çıktı, artık üç sütunlu 'uzun' bir biçime sahip olan konsola uzun DataFrame'i görüntüler:

Örnek 4: R'de Pivot_Wider() İşlevini Kullanarak DataFrame'i Transpoze Edin

DataFrame'i transpoze etmek için kullandığımız bir sonraki gelişmiş işlev, pivot_wider() işlevidir. pivot_wider(), 'uzun' bir DataFrame'i 'geniş' bir DataFrame'e dönüştürmemizi sağlayan, R'deki Tiddr paketinden bir işlevdir. İşlev, aşağıdaki R kodunda açıklanan üç ana argüman alır:

kütüphane(düzenli)

df <- veri.çerçeve(

kimlik = c(1, 2, 3, 1, 2, 3),
var = c('v1', 'v1', 'v1', 'v2', 'v2', 'v2')),
val = c(4, 5, 6, 7, 8, 9)


)

df

Burada öncelikle library() fonksiyonunu kullanarak Tiddr paketini yüklüyoruz. Ardından, örnek DataFrame'i “df” olarak ayarlıyoruz. “df” DataFrame, buna göre farklı değerler içeren üç sütuna sahiptir. Örnek DataFrame aşağıdaki çıktıda görülebilir:

Bundan sonra, 'df'yi 'df_wide'a dönüştürmek için Tiddr'deki pivot_wider() işlevi kullanılır.

df_wide <- pivot_wider(df, adlar_başlangıç ​​= var, değerler_başlangıç ​​= değer)

df_wide

pivot_wider() işlevi burada üç bağımsız değişken alır. İlk olarak, dönüştürülecek “df” DataFrame gerekir. Sonra, name_from bağımsız değişkeni, yeni değişken adları için kullanılacak sütun adını ayarlar. Son olarak, values_from bağımsız değişkeni, yeni değerler için kullanılacak sütun adını belirtir.

Aşağıdaki çıktı, uzun DataFrame'in geniş DataFrame'e aktarılmasını temsil eder:

Çözüm

DataFrame'i R'de transpoze etmek için çeşitli yollar kullandık. İlk örnek, yerleşik t() yöntemiyle ayarlandı. Diğer tüm örnekler, DataFrame transpozisyonu için işlevlerini kullanabilmemiz için paketlerin içe aktarılmasını gerektiriyordu. Ancak, kullanılacak en iyi yöntem, üzerinde çalıştığınız belirli duruma ve veri yapısına bağlıdır.