Wie kann ich dem Datenrahmen eine neue Variable hinzufügen, die der Perzentilrang einer der Variablen ist? Ich kann dies in Excel leicht tun, aber ich möchte das wirklich in R tun.
Vielen Dank
Bei einem gegebenen Vektor von Rohdatenwerten könnte eine einfache Funktion so aussehen
perc.rank <- function(x, xo) length(x[x <= xo])/length(x)*100
Wo x0
ist der Wert, für den wir den Perzentil-Rang wollen, gegeben durch den Vektor x
, wie in R-Bloggern vorgeschlagen .
Es kann jedoch leicht als vektorisiert werden
perc.rank <- function(x) trunc(rank(x))/length(x)
Dies hat den Vorteil, dass nicht jeder Wert übergeben werden muss. Hier ist ein Anwendungsbeispiel:
my.df <- data.frame(x=rnorm(200))
my.df <- within(my.df, xr <- perc.rank(x))
percentrank
, was gut ist (+1), da letztere "seltsame" Ergebnisse liefert (siehe meinen Vergleich ). 2. Ich würde den Datenrahmen nicht benennendf
, dadf
es sich um eine R-Funktion handelt (Dichte der F-Verteilung, siehe?df
).CTT
Paket geholt. Ich habe nicht gegen Excel geprüft, weil ich es nicht habe / benutze. Über (2) Ich scheine das immer zu vergessen! Lass uns mitmy.*
(Perl Weg) gehen :-)trunc
nötig? Es scheint, dass rank immer eine ganze Zahl zurückgibt.rank()
standardmäßig der Durchschnitt der Gleichheitswerte gebildet (vgl.ties.method = c("average",...)
).Wenn Ihr ursprünglicher data.frame aufgerufen wird
dfr
und die Variable von Interesse aufgerufen wirdmyvar
, können Sie siedfr$myrank<-rank(dfr$myvar)
für normale Ränge oderdfr$myrank<-rank(dfr$myvar)/length(myvar)
für Perzentil-Ränge verwenden.Naja. Wenn Sie es wirklich in Excel wollen (vielleicht nicht die einfachste Lösung, aber ich hatte ein bisschen Spaß beim Verwenden neuer (für mich) Funktionen und beim Vermeiden von Schleifen):
So, jetzt können Sie verwenden
dfr$myrank<-percentilerank(dfr$myvar)
HTH.
quelle
length < length(dfr$myvar)
" zurückgeben.Ein Problem mit der vorgestellten Antwort ist, dass es nicht richtig funktioniert, wenn Sie NAs haben.
In diesem Fall ist eine andere Möglichkeit (inspiriert von der Funktion von chl ♦):
Hier ist x der Vektor der Werte und p.ile ist das Rang-Perzentil. 2,5 Perzentile nach Rang (beliebig) coef.mat können berechnet werden durch:
oder als einzelne Funktion:
quelle