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/")
| Bireyler | Kume1 | Kume2 | |
| 1 | Burgazada1 | 0.035 | 0.965 |
| 2 | Burgazada2 | 0.061 | 0.939 |
| 3 | Karşıyaka1 | 0.904 | 0.096 |
| 4 | Karşıyaka2 | 0.818 | 0.182 |
Kodun değil de olayın altında yatan mantığı anlamaya çalışmak için bu kümelenmeyi bir anlık Galatasaray – Fenerbahç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.
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
| Bireyler | Kume1 | Kume2 | |
| 1 | Burgazada1 | 0.035 | 0.965 |
| 2 | Burgazada2 | 0.061 | 0.939 |
| 3 | Karşıyaka1 | 0.904 | 0.096 |
| 4 | Karşıyaka2 | 0.818 | 0.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
| Kume1 | Kume2 | |
| Burgazada | 0.048 | 0.952 |
| Karşıyaka | 0.856 | 0.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.