Mengurutkan sebuah dataframe menggunakan order()
Mari buat sebuah data frame dengan nilai populasi 10. Variabel gender terdiri dari nilai vektor 'male' dan 'female' di mana 10 nilai sampel dapat diperoleh dengan bantuan sample(), sedangkan replace = TRUE akan menghasilkan hanya nilai unik. Demikian pula, age terdiri dari nilai 25 hingga 75, bersama dengan degree dengan kemungkinan nilai c("MA," "ME," "BE," "BSCS"), yang juga akan menghasilkan nilai unik.
Tugas: Mengurutkan data yang diberikan secara menaik berdasarkan usia populasi yang ada.
Catatan: Data sampel yang ditampilkan mungkin berbeda saat Anda mencobanya di mesin lokal karena setiap kali menjalankan kode akan membuat data frame yang unik.
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 |
Kode di atas menghasilkan keluaran berikut, yang menunjukkan data frame baru dibuat.
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
Mari urutkan data frame secara menaik dengan menggunakan order() berdasarkan variabel age.
order(final_data$age)
Kode di atas menghasilkan keluaran berikut:
6 10 3 9 5 8 4 2 7 1
Karena usia 25 berada pada indeks 6 diikuti usia 35 pada indeks 10 dan demikian seterusnya, semua nilai terkait usia diatur secara menaik.
Kode di bawah berisi order [] dengan variabel age, digunakan untuk mengurutkan secara menaik di mana gender bersama informasi degree juga dicetak.
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 |
Kode di atas menghasilkan keluaran berikut:
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
Keluaran di atas menunjukkan bahwa age diatur secara menaik beserta informasi gender dan degree yang sesuai.
Pengurutan Dengan arrange() dari dplyr
Untuk pendekatan yang lebih mudah dibaca dan modern, Anda dapat menggunakan fungsi arrange() dari paket dplyr. Ini sangat berguna saat bekerja dalam ekosistem tidyverse:
# 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))
Fungsi arrange() sering dipilih untuk alur kerja analisis data karena terintegrasi mulus dengan fungsi dplyr lainnya seperti filter(), select(), dan mutate() menggunakan operator pipe.
Perbandingan Metode Pengurutan
| Fungsi | Mengembalikan | Terbaik Untuk | Paket |
|---|---|---|---|
sort() | Nilai yang sudah diurutkan | Vektor | Base R |
order() | Indeks | Data frame, pengurutan kompleks | Base R |
arrange() | Data frame yang diurutkan | Alur kerja Tidyverse | dplyr |
setorder() | Memodifikasi secara in-place | Dataset besar (hemat memori) | data.table |
Kesimpulan
Dalam tutorial ini, saya membahas metode penting untuk mengurutkan data di R:
sort()untuk langsung mengurutkan vektororder()untuk mendapatkan indeks guna mengurutkan vektor dan data frame- Menangani nilai NA dengan parameter
na.last dplyr::arrange()untuk pengurutan data frame yang modern dan mudah dibaca- Pengurutan multi-kolom untuk kebutuhan pengurutan yang kompleks
Untuk informasi lebih lanjut, lihat dokumentasi resmi R untuk order().
Jika Anda ingin mempelajari lebih lanjut tentang R, ikuti kursus Introduction to R dari DataCamp. Anda juga dapat mengeksplorasi tutorial data.table kami untuk manipulasi data berkinerja tinggi, atau lihat panduan kami tentang pipe di R untuk kode yang lebih bersih.

R menyediakan berbagai cara untuk mengurutkan data baik secara menaik maupun menurun; Analis data dan data scientist menggunakan
order(),sort()dan paket seperti dplyr untuk mengurutkan data tergantung pada struktur data yang diperoleh.Ringkas
sort()untuk langsung mengurutkan sebuah vektor dan mengembalikan nilai yang sudah diurutkanorder()untuk mendapatkan indeks yang akan mengurutkan sebuah vektor—ideal untuk mengurutkan data framedplyr::arrange()untuk pendekatan modern dan mudah dibaca saat mengurutkan data framena.last(TRUE menempatkan NA di akhir, FALSE di awal)decreasing = TRUEatau dengan menggunakan tanda minusorder()dapat mengurutkan vektor, matriks, dan juga sebuah data frame dapat diurutkan naik dan turun dengan bantuannya, yang ditunjukkan di bagian akhir tutorial ini.Sintaks
order()Fungsi
sort()Sebelum membahas
order(), mari lihat fungsisort()yang lebih sederhana. Jikaorder()mengembalikan indeks,sort()langsung mengembalikan nilai yang sudah diurutkan:Perbedaan utamanya adalah
sort()memberikan nilai yang sudah diurutkan, sedangkanorder()memberikan posisinya. Hal ini membuatorder()lebih berguna untuk mengurutkan data frame, seperti yang akan kita lihat nanti.Sintaks
order()Sintaks
order()ditunjukkan di bawah ini:Argumen pada
order()di atas menyatakan bahwa:order()di RMari lihat contoh
order()saat digunakan.Kode di bawah membuat vektor
yyang berisi daftar angka. Saya akan menggunakanorder(y)untuk mendapatkan indeks yang akan mengurutkan angka-angka tersebut.Kode di atas menghasilkan keluaran berikut:
Di sini
order()akan mengurutkan angka yang diberikan menurut indeksnya secara menaik. Karena angka 2 adalah yang terkecil, yang memiliki indeks lima dan angka 4 berindeks 1, dan seterusnya proses bergerak dengan pola yang sama.Kode di atas menghasilkan keluaran berikut:
Di sini pengindeksan order dilakukan sehingga nilai sebenarnya dicetak secara menaik. Nilai diurutkan menurut indeks menggunakan
order()lalu setiap nilai diakses menggunakany[some-value].Mengurutkan vektor menggunakan berbagai parameter di
order()Mari lihat contoh saat dataset berisi nilai berupa simbol NA (Not available/tidak tersedia).
order(x,na.last=TRUE)
Kode di atas menghasilkan keluaran berikut:
Di sini
order()juga akan mengurutkan daftar angka yang diberikan menurut indeksnya secara menaik. Karena ada NA, indeksnya akan ditempatkan di akhir, yaitu 6 akan ditempatkan terakhir karenana.last=TRUE.order(x,na.last=FALSE)Kode di atas menghasilkan keluaran berikut:
Di sini
order()juga akan mengurutkan daftar angka yang diberikan menurut indeksnya secara menaik. Karena ada NA, indeksnya yaitu 6 akan ditempatkan di awal karenana.last=FALSE.order(x,decreasing=TRUE,na.last=TRUE)
Kode di atas menghasilkan keluaran berikut:
Di sini
order()akan mengurutkan daftar angka yang diberikan menurut indeksnya secara menurun karenadecreasing=TRUE: 46 yang terbesar ditempatkan pada indeks 7, dan nilai lainnya diatur secara menurun. Karena ada NA, indeks 6 akan ditempatkan terakhir karenana.last=TRUE.order(x,decreasing=FALSE,na.last=FALSE)
Kode di atas menghasilkan keluaran berikut:
Di sini terdapat NA yang berindeks 6 akan ditempatkan di awal karena
na.last=FALSE.order()akan mengurutkan daftar angka yang diberikan menurut indeksnya secara menaik karenadecreasing=FALSE: -4 yang merupakan nilai terkecil ditempatkan pada indeks 5, dan nilai lainnya diatur secara menaik.