#r
#r
Вопрос:
Я пытаюсь сократить переменную, чтобы создать коэффициент с 3 с тремя уровнями «маленький», который равен (от -бесконечности до -1.645), средний, который равен (от -1.645 до 1.645) и большой (от 1.645 до положительной бесконечности)
Комментарии:
1.
dplyr::case_when(x < -1.645 ~ "Low", x < 1.645 ~ "Middle", x >= 1.645 ~ "High")
2. база R, которую вы можете попробовать:
new_vec <- cut(vec, breaks = c(-Inf, -1.645, 1.645, Inf), labels = c("small", "medium", "large"))
Ответ №1:
Самый простой способ сделать это с помощью base
R — следовать предложению от @Ben, используя cut()
функцию:
x <- rnorm(1000, mean = 0, sd = 4)
y <- cut(x, breaks = c(-Inf, -1.645, 1.645, Inf), labels = c("small", "medium", "large"))
Это dplyr
также довольно легко сделать, используя case_when()
функцию, предложенную @Phil . Я бы просто добавил between()
функцию посередине, чтобы сделать намерение кода более понятным.
library(dplyr)
y <- case_when(
x < -1.645 ~ "small",
between(x, -1.645, 1.645) ~ "medium",
x > 1.645 ~ "large"
)