Мой диапазон значений довольно узок, но я хочу, чтобы функция обрезки заставляла интервалы увеличиваться, даже если это означает, что диапазон интервалов будет довольно узким. Но оно этого не делает.
temp <- c(8.32, 8.43, 8.41, 7.86, 7.98, 7.86, 8.07, 8.51, 7.92, 7.94, 8.36)
bins = 3
labels = c("Low","Medium","High")
categories <- cut(temp, breaks=bins, labels=labels)
> categories
[1] High High High Low Low Low Low High Low Low High
Levels: Low Medium High
Но если я попрошу его разрезать на 4 интервала, я получу больший диапазон:
bins = 4
labels = c("Low","Medium","High", "Very High")
categories <- cut(temp, breaks=bins, labels=labels)
> categories
[1] High Very High Very High Low Low Low Medium Very High Low Low Very High
Levels: Low Medium High Very High
Как я могу заставить свой 3-интервальный диапазон включать некоторые значения как «средние»?
Если вы хотите автоматизировать это и не указывать точки останова, ggplot2
имеет для этого хорошие функции: cut_interval()
создает n
группы с одинаковым диапазоном, cut_number()
создает n
группы с (приблизительно) равным количеством наблюдений; cut_width()
делает группы шириной width
. См. документацию .
В интервале 8.076667 8.293333 нет элементов temp
. Вот почему нет «Средних значений».
1) квантиль. Попробуйте сократить на квантили.
bins <- length(labels)
cut(temp, breaks = quantile(temp, 0:bins / bins), labels = labels,
include.lowest = TRUE)
## [1] Medium High High Low Medium Low Medium High Low Low
## [11] High
## Levels: Low Medium High
2) quantcut или попробуйте quantcut из gtools
library(gtools)
quantcut(temp, q = length(labels), labels = labels)
## [1] Medium High High Low Medium Low Medium High Low Low
## [11] High
## Levels: Low Medium High
Это сработало отлично. Спасибо!
Есть ли способ увидеть, как Quantcut разделяет данные по количеству ячеек, которые мне нужны? Просто чтобы я мог видеть диапазон для каждого интервала?
Прежде чем бежать quantcut
беги trace(quantcut, exit = quote(print(quant)))
или беги quantcut(temp, q = 3)
Вы должны предоставить желаемые точки останова вместо того, чтобы «вырезать» их вычислять. Вы читали «Помощь («вырезать»)»?