Мы можем использовать cut
или findInterval
c("s", "m", "l")[findInterval(df$Values, c(1, 3, 5), left.open = TRUE) + 1]
#[1] "s" "m" "m" "m" "l" "l"
Если вы хотите включить его в цепочку dplyr
library(dplyr)
df %>%
mutate(Group = c("s", "m", "l")[findInterval(Values, c(1, 3, 5),
left.open = TRUE) + 1])
# Values Group
#1 1 s
#2 2 m
#3 3 m
#4 3 m
#5 4 l
#6 5 l
данные
df <- data.frame(Values = c(1, 2, 3, 3, 4, 5))