0Pricing
R Academy · Pelajaran

Memberi Peringkat Nilai dengan rank()

Tetapkan peringkat dengan metode pemecah seri: average, first, min, max, random.

Memberi Peringkat Nilai dengan rank() adalah pelajaran R Academy gratis di CoddyKit. Ini adalah pelajaran 3 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar R Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus R Academy mencakup 4 pelajaran total.

Nilai yang Dikembalikan rank()

rank(x) mengembalikan peringkat sampel dari nilai-nilai dalam suatu vektor. Nilai terkecil mendapat peringkat 1, nilai terkecil kedua mendapat peringkat 2, dan seterusnya. Berbeda dari order(), panjang hasilnya sama dengan masukan, dengan setiap posisi berisi peringkatnya.

scores <- c(78, 92, 65, 88, 71)
ranks <- rank(scores)
print(scores)
print(ranks)

Menangani Nilai Sama: Metode Rata-Rata

Ketika nilainya sama, rank() menggunakan argumen ties.method untuk menentukan cara menetapkan peringkat. Nilai defaultnya adalah 'average': elemen yang sama menerima rata-rata peringkat yang seharusnya mereka tempati.

x <- c(10, 20, 20, 30)
# Default: average of positions 2 and 3 = 2.5
rank(x)
rank(x, ties.method = 'average')

Metode Nilai Sama: first dan last

ties.method = 'first' menetapkan peringkat yang lebih rendah kepada elemen yang sama yang muncul lebih dahulu dalam vektor. 'last' melakukan kebalikannya — elemen yang muncul lebih awal mendapat peringkat yang lebih tinggi.

x <- c(10, 20, 20, 30)
cat('first:', rank(x, ties.method = 'first'), '\n')
cat('last: ', rank(x, ties.method = 'last'),  '\n')

Metode Nilai Sama: min dan max

'min' memberikan semua elemen yang sama peringkat minimum yang mungkin mereka dapatkan (digunakan dalam olahraga: dua pemain yang sama-sama berada di posisi ke-3 sama-sama mendapat peringkat 3, dan tidak ada yang mendapat peringkat 4). 'max' memberikan semua elemen yang sama peringkat maksimum.

x <- c(10, 20, 20, 30)
cat('min:', rank(x, ties.method = 'min'), '\n')
cat('max:', rank(x, ties.method = 'max'), '\n')

Metode Nilai Sama: random

ties.method = 'random' menyelesaikan nilai yang sama dengan menetapkan peringkat berbeda secara acak di antara elemen-elemen tersebut. Setiap pemanggilan dapat menghasilkan hasil yang berbeda. Metode ini berguna ketika Anda memerlukan peringkat integer unik tetapi tidak memedulikan urutan penyelesaian nilai yang sama.

x <- c(10, 20, 20, 20, 30)
set.seed(42)
cat('random run 1:', rank(x, ties.method = 'random'), '\n')
set.seed(99)
cat('random run 2:', rank(x, ties.method = 'random'), '\n')

Peringkat Padat dan Peringkat Standar

rank() dalam R menghasilkan peringkat kompetisi standar (1, 2, 2, 4). Untuk peringkat padat (1, 2, 2, 3 — tanpa celah), gunakan rank(x, ties.method = 'min') pada nilai unik, atau gunakan paket data.table atau dplyr. Berikut adalah solusi dengan R dasar:

x <- c(10, 20, 20, 30)
# Standard ranking (gaps after ties)
cat('Standard:', rank(x, ties.method = 'min'), '\n')
# Dense ranking: rank of sorted unique values
dense <- match(x, sort(unique(x)))
cat('Dense:   ', dense, '\n')

rank() vs order() vs sort()

Ketiga fungsi ini saling berkaitan, tetapi mengembalikan hal yang berbeda: sort(x) mengembalikan nilai yang telah diurutkan, order(x) mengembalikan posisi yang mengurutkan vektor, sedangkan rank(x) mengembalikan peringkat setiap posisi. Berikut perbandingan berdampingan.

x <- c(30, 10, 50, 20, 40)
cat('x       :', x,        '\n')
cat('sort(x) :', sort(x),  '\n')
cat('order(x):', order(x), '\n')
cat('rank(x) :', rank(x),  '\n')

Pemeringkatan dalam Urutan Menurun

Untuk memberi peringkat dari terbesar ke terkecil (peringkat 1 = nilai tertinggi), negasikan vektor sebelum meneruskannya ke rank(). Ini adalah pola yang digunakan untuk papan peringkat, dengan peringkat 1 berarti yang terbaik.

scores <- c(78, 92, 65, 88, 71)
desc_ranks <- rank(-scores)
cat('Scores:      ', scores,     '\n')
cat('Rank (best=1):', desc_ranks, '\n')

Menambahkan Peringkat ke Kerangka Data

Tugas yang umum dilakukan adalah menambahkan kolom peringkat ke kerangka data. Gunakan rank() dengan ties.method = 'min' dan lakukan negasi untuk urutan menurun agar dapat membuat papan peringkat yang tepat.

df <- data.frame(
  player = c('Alice', 'Bob', 'Carol', 'Dave'),
  score  = c(250, 400, 250, 375)
)
df$rank <- rank(-df$score, ties.method = 'min')
df[order(df$rank), ]

rank() dengan Nilai NA

rank() memiliki argumen na.last, sama seperti sort() dan order(). Nilai bawaannya adalah 'keep', yang memberikan peringkat NA kepada nilai NA sambil memeringkat elemen yang bukan NA di antara sesamanya.

x <- c(5, NA, 2, NA, 8, 1)
cat('na.last=keep:  ', rank(x, na.last = 'keep'), '\n')
cat('na.last=TRUE:  ', rank(x, na.last = TRUE),   '\n')
cat('na.last=FALSE: ', rank(x, na.last = FALSE),  '\n')

Peringkat Persentil

Ubah peringkat menjadi persentil dengan membaginya berdasarkan jumlah total. Peringkat persentil memberi tahu Anda bagian nilai yang berada pada atau di bawah elemen tertentu. Hal ini berguna dalam statistika dan penilaian pendidikan.

scores <- c(60, 75, 82, 91, 68, 77, 85, 95)
n <- length(scores)
pct_rank <- rank(scores) / n * 100
result <- data.frame(score = scores, percentile = round(pct_rank, 1))
result[order(result$score), ]

Pemeriksaan Singkat

ties.method mana yang memberikan semua elemen dengan nilai sama peringkat terendah yang mungkin (seperti dalam olahraga ketika dua pemain berbagi posisi ke-3 dan tidak ada yang mendapat posisi ke-4)?

Inti Penting rank()

Inti penting untuk rank():

  • rank(x) mengembalikan peringkat setiap elemen (panjangnya sama dengan input)
  • Bawaan ties.method = 'average': elemen dengan nilai sama berbagi rata-rata peringkatnya
  • 'min' = gaya olahraga (berbagi peringkat terendah), 'max' = berbagi peringkat tertinggi
  • 'first' dan 'last' memecahkan nilai sama berdasarkan urutan kemunculan
  • Gunakan rank(-x) untuk peringkat menurun (peringkat 1 = nilai terbesar)
  • Tambahkan kolom peringkat ke kerangka data dengan df$rank <- rank(-df$score, ties.method='min')
x <- c(10, 30, 20, 30, 10)
cat('average:', rank(x, ties.method = 'average'), '\n')
cat('min:    ', rank(x, ties.method = 'min'),     '\n')
cat('max:    ', rank(x, ties.method = 'max'),     '\n')
cat('first:  ', rank(x, ties.method = 'first'),   '\n')

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Memberi Peringkat Nilai dengan rank()” gratis?

Ya — teks lengkap “Memberi Peringkat Nilai dengan rank()” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus R Academy, upgrade ke CoddyKit PRO. Kursus R Academy mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Memberi Peringkat Nilai dengan rank()”?

Tetapkan peringkat dengan metode pemecah seri: average, first, min, max, random. Kamu berlatih R Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai R Academy?

Tidak diperlukan pengalaman sebelumnya. R Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 3 dari 4.

Berapa lama pelajaran “Memberi Peringkat Nilai dengan rank()” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran R Academy ini?

Ya. Setiap pelajaran R Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Mengurutkan Vektor dengan sort()
  2. order() untuk Pengurutan Fleksibel
  3. Memberi Peringkat Nilai dengan rank()
  4. Mengurutkan Data Frame berdasarkan Kolom
← Kembali ke R Academy