Kurs
R'de Veri Yeniden Şekillendirme, veriyi gereksinimlerinize göre kullanmak için satır ve sütunları kendi istediğiniz biçimde düzenlemeye benzer; çoğunlukla veriler, R'de veri çerçevesi (data frame) formatında alınır ve 'rbind()', 'cbind()' gibi işlevlerle işlenir.
Bu süreçte veriyi satır ve sütunlar hâlinde yeniden şekillendirir veya yeniden düzenlersiniz. Yeniden şekillendirme, veriyi daha ileri işlem için ihtiyaç duyduğunuz belirli bir düzende organize etmektir.
Verinizi Oluşturma
Rastgele sayı üreteci oluşturalım ve veri çerçevesinde birleştirmek üzere sütunlar hazırlayalım. Ayrıca, daha sonra kullanmak için id ekleyelim. 'set.seed(123)', rastgele sayıların üretiminde kullanılır ve bunu kullanan herkesin makinesinde aynı örneğin yeniden üretilmesini sağlar. Üç değişken, colm1, colm2, colm3 oluşturulur. 'sample()' yardımıyla 1 ile 15 arasından değerler üretilir ve aynı değer tekrarlanabilir. Ayrıca, tablo biçiminde veriyi depolamak için bir veri çerçevesi kullanılır ve benzersiz bir sayı olan id de eklenir.
set.seed(123)
N <- 15
colm1 <- sample(1:15, N, replace=TRUE)
colm2 <- sample(1:15, N, replace=TRUE)
colm3 <- sample(1:15, N, replace=TRUE)
df_Temp <- data.frame(colm1, colm2,colm3)
df_Temp$id<-seq(nrow(df_Temp))
df_Temp
Yukarıdaki kod, 'colm1', 'colm2', 'colm3' adlı üç sütunun ve 1'den 15'e kadar id'lerin bulunduğu aşağıdaki çıktıyı verir. İlgili sütunlardaki değerler 1 ile 15 arasında doldurulmuştur; bazı sayılar tekrar ederken bazıları hiç görünmeyebilir.
colm1 colm2 colm3 id
15 11 14 1
15 5 3 2
3 3 4 3
14 11 14 4
3 9 1 5
10 12 11 6
2 9 7 7
6 9 5 8
11 13 12 9
5 3 15 10
4 8 10 11
14 10 13 12
6 7 7 13
9 10 9 14
10 9 9 15
cbind işlevi
Kullanım: vektörleri, matrisleri ve veri çerçevelerini sütunlara göre birleştirmek için kullanılır.
Parametreler: cbind(v1,v2): v1,v2 vektör, matris veya veri çerçevesi olabilir
Bağlama işleminin nasıl çalıştığını bir örnekle görelim.
id, 'df_Temp[,4]' ile seçilebilir; 'df_Temp[,2]' ise df_Temp'in 'colm2' sütununu seçer ve aşağıda 'cbind()' için parametre görevi görerek 'cbindexample' değişkenine kaydedilir. Ayrıca, sütun adları 'colnames()' yardımıyla değiştirilebilir; bu işlev, değişkeni vektör girişi c ile kabul edip yeni bir değere, yani 'newid', 'new_colm2' olarak atar.
cbindexample<-cbind(df_Temp[,4],df_Temp[,2])
colnames(cbindexample)<- c('newid','new_colm2')
cbindexample
Yukarıdaki kod, id ve column2'yi 'cbind' işleviyle bağlayarak yeni bir veri çerçevesi oluşturabileceğinizi gösteren aşağıdaki çıktıyı verir. Ayrıca, sütun adı 'new_colm2' olarak değiştirilmiş, 'id' ise 'newid' olarak güncellenmiştir.
newid new_colm2
1 11
2 5
3 3
4 11
5 9
6 12
7 9
8 9
9 13
10 3
11 8
12 10
13 7
14 10
15 9
rbind işlevi:
Kullanım: rbind, vektörleri, matrisleri veya veri çerçevelerini satırlara göre birleştirmek için kullanılır.
Parametreler: rbind(v1,v2): v1,v2 vektör, matris veya veri çerçevesi olabilir.
'new_vector' adlı yeni bir vektör oluşturalım ve 'rbind' kullanarak iki sütunlu yeni 'cbindexample' ile birleştirelim; her ikisi birleştirilip 'rbindexample' içine kaydedilir.
new_vector<- c(16,15)
rbindexample<- rbind(cbindexample,new_vector)
rbindexample
Yukarıdaki kod, aşağıdaki çıktıyı verir; yeni satırda 'newid' ve 'new_colm2' sütunlarına karşılık sırasıyla 16 ve 15 değerleri eklenmiştir.
newid new_colm2
1 11
2 5
3 3
4 11
5 9
6 12
7 9
8 9
9 13
10 3
11 8
12 10
13 7
14 10
15 9
16 15
Melt İşlevi:
Kullanım: Melt işlevi, bir nesneyi eritilmiş hâle dönüştürmek için kullanılır; yani birden çok veri sütununu tek bir veri sütununa dönüştürür.
Parametreler: melt(data,…,na.rm=FALSE/TRUE, value.name=”value” ),
Data: Eritilecek girdi.
...: İleriye veya geriye iletilen girdi.
Na.rm: Açıkça belirtilmiş eksik değerleri örtük eksik değerlere dönüştürmek için kullanılır.
Value.name: değerleri değişkenlerde saklamak için
Aşağıdaki kodda, id değişkenini kullanarak veriyi sütun adı ve değer ile tek bir sütunda nasıl 'eriteceğinize' bakalım:
'reshape2' adlı kitaplığı 'library()' ile içe aktaralım ve 'dfTemp' içindeki colm1, colm2, colm3 sütunlarını 'id' değişkenine göre tek bir yerde 'variable' altında birleştirmek için melt kullanalım.
library(reshape2)
molted=melt(df_Temp,id.vars=c("id"))
molted
id variable value
1 colm1 15
2 colm1 15
3 colm1 3
4 colm1 14
5 colm1 3
6 colm1 10
7 colm1 2
8 colm1 6
9 colm1 11
10 colm1 5
11 colm1 4
12 colm1 14
13 colm1 6
14 colm1 9
15 colm1 10
1 colm2 11
2 colm2 5
3 colm2 3
4 colm2 11
5 colm2 9
6 colm2 12
7 colm2 9
8 colm2 9
9 colm2 13
10 colm2 3
11 colm2 8
12 colm2 10
13 colm2 7
14 colm2 10
15 colm2 9
1 colm3 14
2 colm3 3
3 colm3 4
4 colm3 14
5 colm3 1
6 colm3 11
7 colm3 7
8 colm3 5
9 colm3 12
10 colm3 15
11 colm3 10
12 colm3 13
13 colm3 7
14 colm3 9
15 colm3 9
Yukarıdaki çıktı, colm1, colm2, colm3 verilerini id değişkenine göre erittiğinizde, bunların 'variable' adlı tek bir sütunda birleştiğini ve sütun değerlerinin 'value' içinde yer aldığını gösterir.
Dcast işlevi:
Kullanım: Eritilmiş bir veri kümeniz olduğunda, bu işlevle eritilmiş veri kümesini özgün biçimine dönüştürebilirsiniz.
Parametreler: dcast(data,id_variable~value),
data: özgün hâline dönüştürülmesi gereken eritilmiş veri.
Id_variable: Diğer sütunların verisini tek bir sütunda eritmek için kullanılan tekil veya çoklu sütun(lar).
~: Bu işaretten sonra, eritilmiş veri kümesindeki değerleri veya yeni eritilmiş sütunu kullanırız.
Aşağıdaki kodda, 'reshape2' 'library()' ile içe aktarılır; 'dcast()' ilk parametre olarak 'molt()' işlevinin uygulandığı veriyi alır ve id ile '~' işareti kullanılarak yeni eritilmiş sütunun oluşmasını sağlar.
library(reshape2)
dcast(molted,id~variable)
id colm1 colm2 colm3
1 15 11 14
2 15 5 3
3 3 3 4
4 14 11 14
5 3 9 1
6 10 12 11
7 2 9 7
8 6 9 5
9 11 13 12
10 5 3 15
11 4 8 10
12 14 10 13
13 6 7 7
14 9 10 9
15 10 9 9
Gördüğünüz gibi, 'molt()' işlevinden sonra veri tekrar özgün veri kümesine dönüştürülmüştür. Üç sütun ve bu sütunlara ait değerler ile ayrıca ayrı bir sütunda id bulunmaktadır.
Transpose (devrik) işlevi:
Kullanım: Satırları sütuna, sütunları satıra dönüştürmek için kullanılır.
Parametreler: t(data); data, devriği alınacak veri çerçevesidir.
Transpose işlevini kullanarak satırı sütuna ve tersini değiştirelim. Bunu 't(df_Temp)' yazarak kolayca yapabilirsiniz.
trans <- t(df_Temp)
trans
Yukarıdaki kod aşağıdaki çıktıyı verir:
colm1 15 15 3 14 3 10 2 6 11 5 4 14 6 9 10
colm2 11 5 3 11 9 12 9 9 13 3 8 10 7 10 9
colm3 14 3 4 14 1 11 7 5 12 15 10 13 7 9 9
id 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
Görüldüğü gibi, 15 satır ve dört sütundan oluşan veri çerçevesi, verinin devriği alınarak 15 sütun ve 3 satıra dönüştürülmüştür.
Tebrikler
Tebrikler, bu eğitimi sonuna kadar tamamladınız!
Bu eğitimde, R'nin 'rbind()', 'cbind()' gibi farklı işlevlerini, ayrıca 'Melt()', 'Dcast()' ve son olarak transpose işlevini ele aldınız.
R hakkında daha fazla bilgi edinmek isterseniz, DataCamp'in Introduction to R kursunu alın ve R Paketleri: Yeni Başlayanlar için Eğitim yazımıza göz atın.
Kaynakça:
Melt işlevleri
