Как упомянул @sarah, из предоставленных вами данных довольно сложно дать определенный ответ, но ...
Да cut_number
имеет некоторые внутренние логики c о размере бункеров. Это не так просто, как общий размер (N = 5 или любое другое число), это также связано с относительным размером. По моему опыту, это вызывает сообщение об ошибке (см. Ниже), но это может быть потеряно в процессе фасетирования в вашем случае. Чтобы дать вам простой пример, давайте используем diamonds
из ggplot2
Обратите внимание, что мы можем сделать 27 бинов на основе нашей очень большой выборки из> 53 000 бриллиантов depth
, но не 28, и это явно не так любой N будет приближаться к небольшому числу. Вы можете поиграть со своими собственными данными, основанными на той же методологии, а затем определить, хотите ли вы, чтобы определенные срезы принудительно выполнялись вручную, или выбрать размер корзины, который подходит для каждой комбинации.
Чак
library(ggplot2)
library(dplyr)
#>
#> Attaching package: 'dplyr'
#> The following objects are masked from 'package:stats':
#>
#> filter, lag
#> The following objects are masked from 'package:base':
#>
#> intersect, setdiff, setequal, union
str(diamonds)
#> tibble [53,940 × 10] (S3: tbl_df/tbl/data.frame)
#> $ carat : num [1:53940] 0.23 0.21 0.23 0.29 0.31 0.24 0.24 0.26 0.22 0.23 ...
#> $ cut : Ord.factor w/ 5 levels "Fair"<"Good"<..: 5 4 2 4 2 3 3 3 1 3 ...
#> $ color : Ord.factor w/ 7 levels "D"<"E"<"F"<"G"<..: 2 2 2 6 7 7 6 5 2 5 ...
#> $ clarity: Ord.factor w/ 8 levels "I1"<"SI2"<"SI1"<..: 2 3 5 4 2 6 7 3 4 5 ...
#> $ depth : num [1:53940] 61.5 59.8 56.9 62.4 63.3 62.8 62.3 61.9 65.1 59.4 ...
#> $ table : num [1:53940] 55 61 65 58 58 57 57 55 61 61 ...
#> $ price : int [1:53940] 326 326 327 334 335 336 336 337 337 338 ...
#> $ x : num [1:53940] 3.95 3.89 4.05 4.2 4.34 3.94 3.95 4.07 3.87 4 ...
#> $ y : num [1:53940] 3.98 3.84 4.07 4.23 4.35 3.96 3.98 4.11 3.78 4.05 ...
#> $ z : num [1:53940] 2.43 2.31 2.31 2.63 2.75 2.48 2.47 2.53 2.49 2.39 ...
cut_number(diamonds$depth, n = 10) %>% table
#> .
#> [43,60] (60,60.8] (60.8,61.2] (61.2,61.6] (61.6,61.8] (61.8,62.1]
#> 5625 5671 4953 6878 3981 6422
#> (62.1,62.4] (62.4,62.7] (62.7,63.3] (63.3,79]
#> 5771 4366 5386 4887
cut_number(diamonds$depth, n = 27) %>% table
#> .
#> [43,59] (59,59.7] (59.7,60.1] (60.1,60.4] (60.4,60.7] (60.7,60.9]
#> 2067 2182 1926 1829 2369 1987
#> (60.9,61.1] (61.1,61.2] (61.2,61.4] (61.4,61.5] (61.5,61.6] (61.6,61.7]
#> 2463 1426 3203 1719 1956 1904
#> (61.7,61.8] (61.8,61.9] (61.9,62] (62,62.1] (62.1,62.2] (62.2,62.3]
#> 2077 2163 2239 2020 2039 1940
#> (62.3,62.4] (62.4,62.5] (62.5,62.6] (62.6,62.8] (62.8,62.9] (62.9,63.2]
#> 1792 1563 1497 2539 1096 2352
#> (63.2,63.5] (63.5,64] (64,79]
#> 1847 1875 1870
cut_number(diamonds$depth, n = 28) %>% table
#> Error: Insufficient data values to produce 28 bins.
Создано в 2020-04-17 пакетом Представ (v0.3.0)