У меня есть фрейм данных примерно так:
set.seed(567)
year= as.factor(c(rep("1998", 20), rep("1999", 16)))
lepsp= c(letters[seq(from = 1, to = 20 )], c('a','b','c'),letters[seq(from =8, to = 20 )])
freq= rpois(36, lambda=12)
df<-data.frame(year, lepsp, freq)
df<-
df %>%
group_by(year) %>%
mutate(rank = dense_rank(-freq))
Я хотел бы подмножество df
на year
и создать новый столбец с именем quant
, который присваивает соответствующий квартиль каждому freq
значение в подмножестве.Новому столбцу можно назначить квантиль как probs = seq(0, 1, 0.05)
.Самое главное, что позже я могу назначать категории на основе квантиля, так что, например, все, что ниже 25%, классифицируется как редкое.Таким образом, это могут быть общие квартильные обозначения, но чем меньше приращения в процентилях, тем больше «комнаты для маневра» я буду классифицировать как редкий r
или обычный c
.
Вывод должен выглядеть следующим образом:
df<-data.frame(df, quant= c(75,50,25,50,50,25,75,50,25,75,75,100,50,100,100,50,25,25,75,25,75,50,50,75,75,25,25,50,50,50,25,75,75,25,75,50),
abucat= c("c", "r", "r","r","r", "r","c","r","r", "c", "c", "c", "r","c", "c","r" , "r", "r", "c", "r", "c","r","r","c","c","r",
"r","r","r","r","r","c","c","r","c","r"))
Я пробовал:
library(dplyr)
df<-
df %>%
group_by(year) %>%
mutate(quant = quantile(freq, probs= seq(0, 1, 0.25)))