order() kullanarak bir veri çerçevesini sıralama
Nüfus değerinin 10 olduğu bir veri çerçevesi oluşturalım. Cinsiyet değişkeni, sample() yardımıyla 10 örnek değer üretilebilen 'male' ve 'female' vektör değerlerinden oluşur; replace = TRUE ise yalnızca benzersiz değerler üretecektir. Benzer şekilde, yaş 25 ile 75 arasındaki değerlerden ve olası dereceler c("MA," "ME," "BE," "BSCS") olacak şekilde oluşturulur; bu da yine benzersiz değerler üretecektir.
Görev: Verilen verileri, verilen nüfusun yaşına göre artan düzende sıralamak.
Not: Gösterilen örnek veriler, kodu yerel makinenizde çalıştırdığınızda farklılık gösterebilir; çünkü her çalıştırmada benzersiz bir veri çerçevesi oluşturulur.
population <- 10
gender <- sample(c("male", "female"), population, replace = TRUE)
age <- sample(25:75, population, replace = TRUE)
degree <- sample(c("MA", "ME", "BE", "BSCS"), population, replace = TRUE)
final_data <- data.frame(gender = gender, age = age, degree = degree)
final_data
| gender | age | degree |
|---|---|---|
| male | 40 | MA |
| female | 57 | BSCS |
| male | 66 | BE |
| female | 61 | BSCS |
| female | 48 | MA |
| male | 25 | MA |
| female | 49 | BE |
| male | 52 | ME |
| female | 57 | MA |
| female | 35 | MA |
Yukarıdaki kod, yeni oluşturulan bir veri çerçevesini gösteren aşağıdaki çıktıyı verir.
gender age degree
male 40 MA
female 57 BSCS
male 66 BE
female 61 BSCS
female 48 MA
male 25 MA
female 49 BE
male 52 ME
female 57 MA
female 35 MA
Veri çerçevesini, yaş değişkenine göre order() kullanarak artan düzende sıralayalım.
order(final_data$age)
Yukarıdaki kod aşağıdaki çıktıyı verir:
6 10 3 9 5 8 4 2 7 1
Yaş 25, 6. indistedir; onu 35 yaşıyla 10. indis izler ve benzer şekilde tüm yaş değerleri artan düzende sıralanır.
Aşağıdaki kodda, yaş değişkeniyle birlikte [] sıralaması kullanılır; böylece cinsiyet ve derece bilgileri de yazdırılarak artan düzende düzenleme yapılır.
final.data[order(final.data$age),]
| gender | age | degree | |
|---|---|---|---|
| 6 | male | 25 | MA |
| 10 | female | 35 | MA |
| 1 | male | 40 | MA |
| 5 | female | 48 | MA |
| 7 | female | 49 | BE |
| 8 | male | 52 | ME |
| 2 | female | 57 | BSCS |
| 9 | female | 57 | MA |
| 4 | female | 61 | BSCS |
| 3 | male | 66 | BE |
Yukarıdaki kod aşağıdaki çıktıyı verir:
gender age degree
6 male 25 MA
10 female 35 MA
1 male 40 MA
5 female 48 MA
7 female 49 BE
8 male 52 ME
2 female 57 BSCS
9 female 57 MA
4 female 61 BSCS
3 male 66 BE
Yukarıdaki çıktı, yaşın ilgili cinsiyet ve derece bilgileriyle birlikte artan düzende sıralandığını gösterir.
dplyr'ın arrange() Fonksiyonu ile Sıralama
Daha okunabilir ve modern bir yaklaşım için, dplyr paketindeki arrange() fonksiyonunu kullanabilirsiniz. Bu, özellikle tidyverse ekosistemiyle çalışırken faydalıdır:
# Install dplyr if needed: install.packages("dplyr")
library(dplyr)
# Sort by age in ascending order
final_data %>% arrange(age)
# Sort by age in descending order
final_data %>% arrange(desc(age))
# Sort by multiple columns
final_data %>% arrange(gender, desc(age))
arrange() fonksiyonu, pipe operatörünü kullanarak filter(), select() ve mutate() gibi diğer dplyr fonksiyonlarıyla sorunsuz entegre olduğu için veri analizi iş akışlarında sıklıkla tercih edilir.
Sıralama Yöntemlerinin Karşılaştırması
| Function | Returns | Best For | Package |
|---|---|---|---|
sort() | Sıralı değerler | Vektörler | Base R |
order() | İndisler | Veri çerçeveleri, karmaşık sıralamalar | Base R |
arrange() | Sıralanmış veri çerçevesi | Tidyverse iş akışları | dplyr |
setorder() | Yerinde değiştirir | Büyük veri kümeleri (bellek verimli) | data.table |
Sonuç
Bu eğitimde, R'de verileri sıralamanın temel yöntemlerini ele aldım:
- Vektörleri doğrudan sıralamak için
sort() - Vektörleri ve veri çerçevelerini sıralamak için indis elde etmeye yarayan
order() na.lastparametresiyle NA değerlerinin yönetimi- Modern ve okunabilir veri çerçevesi sıralaması için
dplyr::arrange() - Karmaşık sıralama gereksinimleri için çok sütunlu sıralama
Daha fazla bilgi için order() için resmi R dokümantasyonuna bakın.
R hakkında daha fazla bilgi edinmek isterseniz DataCamp'in Introduction to R kursunu alın. Yüksek performanslı veri işleme için data.table eğitimimizi inceleyebilir veya daha temiz kod için R'de pipe rehberimize göz atabilirsiniz.

R, verileri artan veya azalan düzende sıralamak için farklı yollar sunar; veri analistleri ve veri bilimcileri elde edilen verinin yapısına bağlı olarak verileri sıralamak için
order(),sort()ve dplyr gibi paketler kullanır.Özet
sort()kullanınorder()kullanın — veri çerçevelerini sıralamak için idealdirdplyr::arrange()kullanınna.lastparametresiyle NA değerlerini yönetin (TRUE NA'leri sona, FALSE başa koyar)decreasing = TRUEveya eksi işareti kullanınorder()vektör, matris sıralayabilir; ayrıca bir veri çerçevesi de onun yardımıyla artan ve azalan düzende sıralanabilir; bunun gösterimi bu eğitimin son bölümünde yer almaktadır.Syntax of
order()The
sort()functionorder()'a geçmeden önce, daha basit olansort()fonksiyonuna bakalım.order()indis döndürürken,sort()doğrudan sıralı değerleri döndürür:Temel fark,
sort()'un size gerçek sıralı değerleri,order()'ın ise konumları vermesidir. Bu nedenle, ileride göreceğimiz gibi,order()veri çerçevelerini sıralamak için daha kullanışlıdır.Syntax of
order()order()'ın söz dizimi aşağıda gösterilmiştir:order()içindeki yukarıdaki argümanlar şunları ifade eder:order()in RŞimdi
order()'ın kullanımına bir örnek bakalım.Aşağıdaki kod, bir sayı listesini içeren
yadlı bir vektör oluşturur. Bu sayıların nasıl sıralanacağını veren indisleri elde etmek içinorder(y)kullanacağım.Yukarıdaki kod aşağıdaki çıktıyı verir:
Burada
order(), verilen sayıları artan düzende indislerine göre sıralar. En küçük sayı 2 olduğundan indisi beştir ve sayı 4'ün indisi 1'dir; benzer şekilde süreç aynı desenle ilerler.Yukarıdaki kod aşağıdaki çıktıyı verir:
Burada sıralama indisleri kullanılarak gerçek değerler artan düzende yazdırılmıştır. Değerler önce
order()ile indise göre sıralanır, ardından her değery[some-value]kullanılarak erişilir.order()içinde farklı parametreler kullanarak vektör sıralamaDeğer setlerinde NA (Not available) simgesinin bulunduğu bir örneğe bakalım.
order(x,na.last=TRUE)
Yukarıdaki kod aşağıdaki çıktıyı verir:
Burada
order()verilen sayı listesini artan düzende indislerine göre sıralar. NA bulunduğundan, 6 indisina.last=TRUEnedeniyle en sona yerleştirilir.order(x,na.last=FALSE)Yukarıdaki kod aşağıdaki çıktıyı verir:
Burada
order()verilen sayı listesini yine artan düzende indislerine göre sıralar. NA bulunduğundan, 6 olan indisina.last=FALSEnedeniyle en başa yerleştirilir.order(x,decreasing=TRUE,na.last=TRUE)
Yukarıdaki kod aşağıdaki çıktıyı verir:
Burada
order(),decreasing=TRUEnedeniyle verilen sayı listesini azalan düzende indislerine göre sıralar: 46 en büyük olduğundan 7. indistedir ve diğer değerler azalan şekilde yerleştirilir. NA bulunduğundan 6 indisina.last=TRUEnedeniyle en sona yerleştirilir.order(x,decreasing=FALSE,na.last=FALSE)
Yukarıdaki kod aşağıdaki çıktıyı verir:
Burada NA mevcuttur ve indisi 6 olduğundan
na.last=FALSEnedeniyle en başa yerleştirilir.order(),decreasing=FALSEnedeniyle verilen sayı listesini artan düzende indislerine göre sıralar: en küçük olan -4, 5. indistedir ve diğer değerler artan şekilde düzenlenir.