Как я могу добавить новую переменную во фрейм данных, которая будет иметь процентильный ранг одной из переменных? Я могу сделать это в Excel легко, но я действительно хочу сделать это в R.
Благодарность
Учитывая вектор значений необработанных данных, простая функция может выглядеть так:
perc.rank <- function(x, xo) length(x[x <= xo])/length(x)*100
где x0
- это значение, для которого мы хотим получить процентильный ранг, учитывая вектор x
, как это предлагается для R-блогеров .
Тем не менее, это может быть легко векторизовать как
perc.rank <- function(x) trunc(rank(x))/length(x)
преимущество в том, что не нужно передавать каждое значение. Итак, вот пример использования:
my.df <- data.frame(x=rnorm(200))
my.df <- within(my.df, xr <- perc.rank(x))
percentrank
, что хорошо (+1), поскольку последняя дает «странные» результаты (см. Мое сравнение ). 2. Я бы не назвал фрейм данныхdf
, потому чтоdf
это R-функция (см. Плотность F-распределения?df
).CTT
пакета некоторое время назад. Я не проверял на Excel, потому что я не имею / использую это. О (2) Я, кажется, всегда забываю об этом! Пойдем сmy.*
(путь Perl) :-)trunc
требуется? Кажется, ранг всегда будет возвращать целое число в любом случае.rank()
умолчанию берется среднее значение связанных значений (ср.ties.method = c("average",...)
).Если вызывается ваш оригинальный data.frame и вызывается
dfr
интересующая переменнаяmyvar
, вы можете использовать ееdfr$myrank<-rank(dfr$myvar)
для обычных рангов илиdfr$myrank<-rank(dfr$myvar)/length(myvar)
для процентильных рангов.Ну что ж. Если вы действительно хотите использовать Excel (возможно, это не самое простое решение, но я немного повеселился, используя новые (для меня) функции и избегая циклов):
так что теперь вы можете использовать
dfr$myrank<-percentilerank(dfr$myvar)
НТН.
источник
length < length(dfr$myvar)
».Проблема с представленным ответом состоит в том, что он не будет работать должным образом, когда у вас есть NA.
В этом случае другая возможность (вдохновленная функцией из chl ♦):
Здесь x - вектор значений, а p.ile - процентиль по рангу. 2,5 процентиля по рангу (произвольного) coef.mat можно рассчитать по формуле :
или как отдельная функция:
источник