@ TobiO ответ правильный. Но мои данные были немного искажены, и некоторые точки разреза были одинаковыми (например, первая и вторая точки разреза были одинаковыми). Мне нужно было взять уникальные значения, чтобы рассчитать количество наблюдений в каждом квартиле. Другой момент связан с использованием функции cut
, которая не включает начальную точку (нижняя граница, верхняя граница). Чтобы включить начальную точку, я использовал функцию cut2
из пакета Hmisc
. Iдобавлена строка label_pos_extension
, чтобы предотвратить наложение метки / текста для квартилей, точки разреза которых очень близки друг к другу. geom_text_repel
не сработало для предотвращения перекрытий.
quantile_counts2 <- function(x){
label_pos_extension <- c(0,3,4,0)
if(length(unique(quantile(x))) < 5){
df <- data.frame(label = table(cut2(x, g = 4)),
label_pos = c(0, diff(unique(quantile(x))) / 2 + quantile(x)[1:length(unique(quantile(x)))-1]) + label_pos_extension[1:length(unique(quantile(x)))])
} else {
df <- data.frame(label = table(cut2(x, g = 4)),
label_pos = diff(quantile(x)) / 2 + quantile(x)[1:4] + label_pos_extension)
} return(df)
}
PS. Я пытался добавить отредактированную функцию в комментарий, но она не сработала.