написание функции R - PullRequest
       20

написание функции R

0 голосов
/ 29 января 2019

Я хочу написать функцию R, которая даст мне значение на 10-м процентиле наблюдений.Я хочу использовать эту функцию с sapply.Как и для mean, sapply - это

sapply(1 : n, function(i) mean(a1))

Скажем, например, у меня 100 значений, а 10-й процентиль равен 100, я хочу, чтобы было напечатано значение, находящееся в 10-й строке.

X
45
80
70
56
78
78
56
90
35
190

.......... до 100 значений

Желаемый вывод: вывести значение в 10-й строке, то есть 190 в столбце выше

Я хочу, чтобы функция вычислялапервый 10-й процентиль из моих 100 наблюдений, а затем просто выведите значение, приходящее на эту позицию.

Ответы [ 2 ]

0 голосов
/ 29 января 2019

Вот простая функция, которую я написал: она принимает данные как data.frame объект.

select_percentile<-function(df,n){
  df<-df
  nth<-(n/nrow(df))*100
  return(df[nth,])
}

Использование данных из другого ответа:

 set.seed(42)
   a1 <- rnorm(100)
    df1<-as.data.frame(a1)
    select_percentile(df1,10)

Результат:

#[1] -0.0627141
0 голосов
/ 29 января 2019

Желаемая функция будет выглядеть следующим образом:

give_quant_value <- function(vec, quantile) {
    return(vec[quantile(1:length(vec),p=quantile,type=1)])
}

, где
- vec - интересующий вектор
- quantile - интересующий квантиль

Доказательство:

set.seed(42)
a1 <- rnorm(100)
give_quant_value(a1, 0.1)
-0.062714099052421

Вы можете узнать больше о функции quantile, набрав ?quantile в своем терминале

...