Bagaimana saya bisa menambahkan variabel baru ke dalam kerangka data yang akan menjadi peringkat persentil dari salah satu variabel? Saya dapat melakukan ini di Excel dengan mudah, tetapi saya benar-benar ingin melakukannya di R.
Terima kasih
Diberikan vektor nilai data mentah, fungsi sederhana mungkin terlihat seperti
perc.rank <- function(x, xo) length(x[x <= xo])/length(x)*100
di mana x0
nilai yang kita inginkan peringkat persentil, diberikan vektor x
, seperti yang disarankan pada R-blogger .
Namun, ini dapat dengan mudah dijadikan vektor
perc.rank <- function(x) trunc(rank(x))/length(x)
yang memiliki keuntungan karena tidak harus melewati setiap nilai. Jadi, berikut ini contoh penggunaannya:
my.df <- data.frame(x=rnorm(200))
my.df <- within(my.df, xr <- perc.rank(x))
percentrank
fungsi -Excel , yang baik (+1) karena yang terakhir memberikan hasil "aneh" (lihat perbandingan saya ). 2. Saya tidak akan memberi nama kerangka datadf
, karenadf
merupakan fungsi R (kepadatan distribusi F, lihat?df
).CTT
paket beberapa waktu yang lalu. Saya tidak mengecek Excel karena saya tidak punya / menggunakannya. Tentang (2) Saya sepertinya selalu lupa tentang ini! Mari kita pergi denganmy.*
(cara Perl) :-)trunc
diperlukan? Tampaknya peringkat akan selalu mengembalikan bilangan bulat.rank()
default untuk mengambil rata-rata nilai yang diikat (lihties.method = c("average",...)
.).Jika kerangka data.frame asli Anda dipanggil
dfr
dan variabel yang menarik disebutmyvar
, Anda dapat menggunakandfr$myrank<-rank(dfr$myvar)
untuk peringkat normal, ataudfr$myrank<-rank(dfr$myvar)/length(myvar)
untuk peringkat persentil.Baiklah. Jika Anda benar-benar menginginkannya dengan cara Excel (mungkin bukan solusi paling sederhana, tapi saya bersenang-senang menggunakan fungsi baru (untuk saya) dan menghindari loop):
jadi sekarang bisa kamu gunakan
dfr$myrank<-percentilerank(dfr$myvar)
HTH.
sumber
length < length(dfr$myvar)
".Masalah dengan jawaban yang disajikan adalah bahwa itu tidak akan berfungsi dengan baik, ketika Anda memiliki NAS.
Dalam hal ini, kemungkinan lain (terinspirasi oleh fungsi dari chl ♦) adalah:
Di sini, x adalah vektor nilai, dan p.ile adalah persentil menurut peringkat. 2,5 persentil dengan peringkat coef.mat (sewenang-wenang) dapat dihitung dengan:
atau sebagai fungsi tunggal:
sumber