Jak mogę dodać nową zmienną do ramki danych, która będzie percentylową rangą jednej ze zmiennych? Mogę to łatwo zrobić w programie Excel, ale naprawdę chcę to zrobić w R.
Dzięki
Biorąc pod uwagę wektor wartości surowych danych, może wyglądać prosta funkcja
perc.rank <- function(x, xo) length(x[x <= xo])/length(x)*100
gdzie x0
jest wartość, dla której chcemy rangę percentylową, biorąc pod uwagę wektor x
, jak sugerują R-blogerzy .
Można go jednak łatwo wektoryzować jako
perc.rank <- function(x) trunc(rank(x))/length(x)
co ma tę zaletę, że nie trzeba przekazywać każdej wartości. Oto przykład użycia:
my.df <- data.frame(x=rnorm(200))
my.df <- within(my.df, xr <- perc.rank(x))
percentrank
, co jest dobre (+1), ponieważ ta ostatnia daje „dziwne” wyniki (patrz moje porównanie ). 2. Nie nazwałbym ramki danychdf
, ponieważdf
jest to funkcja R (gęstość rozkładu F, patrz?df
).CTT
jakiś czas temu złapałem ten z paczki. Nie sprawdziłem programu Excel, ponieważ go nie mam / nie używam. O (2) Wydaje mi się, że zawsze o tym zapominam! Chodźmy zmy.*
(sposób Perla) :-)trunc
wymagany? Wygląda na to, że i tak ranga zawsze zwróci liczbę całkowitą.rank()
domyślnie przyjmuje się średnią z powiązanych wartości (porties.method = c("average",...)
.).Jeśli twoja oryginalna data.frame jest wywoływana
dfr
i wywoływana jest zmienna będąca przedmiotem zainteresowaniamyvar
, możesz użyćdfr$myrank<-rank(dfr$myvar)
dla normalnych rang lubdfr$myrank<-rank(dfr$myvar)/length(myvar)
rang percentylowych.No cóż. Jeśli naprawdę chcesz to w Excelu (może nie jest to najprostsze rozwiązanie, ale dobrze się bawiłem, używając nowych (dla mnie) funkcji i unikając pętli):
więc teraz możesz użyć
dfr$myrank<-percentilerank(dfr$myvar)
HTH.
źródło
length < length(dfr$myvar)
”.Problem z przedstawioną odpowiedzią polega na tym, że nie będzie ona działać poprawnie, gdy masz NA.
W tym przypadku inną możliwością (inspirowaną funkcją chl ♦) jest:
Tutaj x jest wektorem wartości, a p.ile jest percentylem według rangi. 2,5 percentyl według rangi (arbitralnej) wartości współczynnika może być obliczony przez:
lub jako pojedyncza funkcja:
źródło