Используя tidyverse, я хочу дискретизировать числовые данные с целью использования гистограммы для построения различных числовых диапазонов, как если бы данные были категориальными, путем объявления вручную, где происходят сокращения, например, с возрастными группами или диапазонами доходов. Я хочу, чтобы интервалы были неравной ширины.
До сих пор я пробовал базовый подход R, используя cut()
и задавая ячейки с помощью breaks = c()
. Однако я заметил, что в пакете ggplot2
существует набор функций cut_interval
, cut_width
и cut_number
. Я полагаю, что есть способ вручную установить интервалы сокращения с помощью этих функций, потому что аргумент breaks
существует для варианта интервала и числа.
library(tidyverse)
mtcars <- as_tibble(mtcars)
mtcars %>%
count(cut_interval(mpg, n = 4))
#> # A tibble: 4 x 2
#> `cut_interval(mpg, n = 4)` n
#> <fct> <int>
#> 1 [10.4,16.3] 10
#> 2 (16.3,22.1] 13
#> 3 (22.1,28] 5
#> 4 (28,33.9] 4
mtcars %>%
count(cut_interval(mpg, n = 4, breaks = c(10, 18, 23, 28, 35)))
#> Error: Evaluation error: lengths of 'breaks' and 'labels' differ.
Создано 03.06.2019 с помощью пакета REPEX (v0.2.1)
Вышесказанное близко к тому, что я хочу, но оно устанавливает перерывы в зависимости от количества интервалов.
В приведенном выше примере я хотел бы, чтобы мои группы были именно такими:
10-18, 19-23, 24-28, 29-35.
Возможно ли это с использованием аргумента breaks
? Спасибо.