Я не уверен, что делает r_bin_equal
... кажется странным, что он принимает две переменные, а не одну - он должен делать что-то большее, чем просто объединение одной переменной.
Бункеры из равная частота имеет точки отсечки на квантилях . Мы можем написать быструю функцию, использующую quantile
для вычисления точек останова и cut
для хранения данных:
bin_equal = function(x, nbin = 5) {
breaks = quantile(x, probs = seq(0, 1, length.out = nbin + 1), na.rm = TRUE)
return(cut(x, breaks = breaks, labels = 1:nbin, include.lowest = TRUE))
}
bin_equal(rnorm(20), nbin = 3)
# [1] 2 1 2 2 3 3 3 1 1 3 3 3 1 2 1 3 2 2 1 1
# Levels: 1 2 3
Обратите внимание, что это вернет factor
.