範囲が互いに排反であるのであれば,cut
を使って前処理をするのが簡単なように思います.
set.seed(0)
df <- tibble(POS = runif(10, 0, 1) * 10)
df <- df %>%
mutate(newcol = cut(POS,
breaks = c(0, 1, 2, 3, 4, 5, 6, 7, 10),
labels = c("A", NA, "B", NA, "C", NA, "D", NA),
include.lowest = TRUE))
df
# A tibble: 10 × 2
POS newcol
<dbl> <fct>
1 8.97 NA
2 2.66 B
3 3.72 NA
4 5.73 NA
5 9.08 NA
6 2.02 B
7 8.98 NA
8 9.45 NA
9 6.61 D
10 6.29 D
Like!