aggregate() fonksiyonu

R’da aggregate()fonksiyonu ne işe yarar?

İşte başlıyoruz.

Öncelikle kelime anlamı olarak aggregate anladığım kadarıyla “birbirleriyle ilişkili içerikleri bir araya getirme, toplama” gibi anlamlara geliyor.

Burada, üzerinde çalışmaya çalışacağımız, bireyleri farklı genetik kümelenmeye dair üyelik gösteren farklı popülasyonlara dair aşağıdaki gibi değerler içeren bir verimiz olsun.

hatta Excel’i vs. açıp siz de aşağıdaki gibi bir veri oluşturabilirsiniz.

Bireyler,Kume1,Kume2
Burgazada1,0.035,0.965
Burgazada2,0.061,0.939
Karşıyaka1,0.904,0.096
Karşıyaka2,0.818,0.182

Çalışma klasöründe oluşturduğunuz bu dosyayı read.csv komutu ile RStudio’da okutabilirsiniz.

memberships = read.csv("/user/yourdir/") 
BireylerKume1Kume2
1Burgazada10.0350.965
2Burgazada20.0610.939
3Karşıyaka10.9040.096
4Karşıyaka20.8180.182

Kodun değil de olayın altında yatan mantığı anlamaya çalışmak için bu kümelenmeyi bir anlık GalatasarayFenerbahçe takımları için hayal edelim. İkisi de İstanbul’dan köken alıyor ikisi de sarı renge (Küme1) sahip ama bir takım kırmızı (Küme2) diğeri ise lacivert renge (Küme3) sahip. Tabii bizim geçişlerimiz keskin olmak zorunda değil popülasyonun bireyleri (takımın taraftarları) arasında yani farklı kümelerin (sarı, kırmızı ve lacivert) özelliklerine belirli oranda sahip olabilirler ama ben anlaşılması kolay olsun diye aşağıda keskin geçişler kullandım yukarıdakinin aksine. Yine aşağıda aynı bireyi iki defa kullandım birisi i zamanının Bülent’i diğeri de j zamanının Bülent’i olsun farketmez.

BireylerKüme1Küme2Küme3
1BülentGS0.500.500.00
2BülentFB0.500.000.50

devam ediyorus…

agrregate fonksiyonu ne işe yarıyor? Bizim verimiz özelinde genetik kümelenme gösteren bireyleri kendi gruplarına atayarak her kümelenmeye dair üyelik değerlerinin de ortalamasını alıyor. Yani Burgazada1, Burgazada2, Burgazada3, … Burgazada1652 bireylerini yeni bir tabloda bir Bugazada grubu olarak atıyor ve bu 1652 bireyin üyeliklerinin genel ortalamasını alarak sütunlara yerleştiriyor. Aynı işlemi Karşıyaka popülasyonu için de yapıyor.

#Küme değerlerimizin yer aldığı 2.ve 3. sütunları seçelim.

ortalama_uyelik = aggregate(memberships[, 2:3], list(memberships$Bireyler), mean)

#head komutu ile de ilk 6 satırı görüntüleyebiliriz.
head(ortalama_uyelik)

ve verimizi şundan;

Bireyler,Kume1,Kume2
Burgazada1,0.035,0.965
Burgazada2,0.061,0.939
Karşıyaka1,0.904,0.096
Karşıyaka2,0.818,0.182
BireylerKume1Kume2
1Burgazada10.0350.965
2Burgazada20.0610.939
3Karşıyaka10.9040.096
4Karşıyaka20.8180.182

şuna dönüştürüyor (aşağıdaki ortalamaları kafadan hesapladım)

Bireyler,Kume1,Kume2
Burgazada,0.048,0.952
Karşıyaka,0.856,0.053
Kume1Kume2
Burgazada0.0480.952
Karşıyaka0.8560.053

Tebrikler, aggregate fonksiyonu kullanımına benimle birlikte güzel bir giriş yaptınız.

Pekiiii zorumuz ne ki bunu yaptık? O da başka bir iletinin konusu olsun. Fikriniz varsa yorum yapmaktan çekinmeyin.