Я предлагаю создать переменную с помощью команды mutate dplyr, которая должна указывать квантиль другой переменной.
Например:
# 1. Fake data:
data <- data.frame(
"id" = seq(1:20),
"score" = round(rnorm(20,30,20)))
# 2. Creating varaible 'Quantile_5'
data <-data %>%
mutate(Quntile_5 = ????)
До сих пор я создал функцию, которая определяет и возвращает квантиль как коэффициент, и которая действительно работает.
# 3. Create a function:
quantile5 <- function(x){
x = ifelse(
x < quantile(x,0.2),1,
ifelse(x >= quantile(x,0.2) & x < quantile(x,0.4),2,
ifelse(x >= quantile(x,0.4) & x < quantile(x,0.6),3,
ifelse(x >= quantile(x,0.6) & x < quantile(x,0.8),4,5
))))
return(as.factor(x))
}
# 4. Running the code:
data <-data %>%
mutate(Quntile_5 = quantile5(score))
# 5. Result:
data
id score Quntile_5
1 1 55 5
2 2 56 5
3 3 26 3
4 4 42 3
5 5 41 3
6 6 26 3
7 7 57 5
8 8 12 1
9 9 21 2
10 10 25 2
11 11 37 3
12 12 18 2
13 13 54 5
14 14 47 4
15 15 52 4
16 16 -4 1
17 17 53 4
18 18 51 4
19 19 -7 1
20 20 -2 1
Но если я хочу создать, например, переменную Quantile_100 в качестве фактора, указывающего, в какой позиции от 1 до 100 находится каждое наблюдение (в контексте больших наборов данных), это не лучшее решение. Есть ли более простой способ создать эти переменные квинтиля?