Сначала создайте список, содержащий ограничения для rescale
. Первый элемент списка предназначен для Tier
1, второй элемент списка предназначен для Tier
2 и т. Д.
limits <- list(c(60, 51), c(61, 70), c(71, 80), c(81, 90), c(91, 100))
Вы можете использовать этот список в следующем dplyr
подходе:
library(dplyr)
df %>%
group_by(Tier) %>%
mutate(scale = rescale(Score, to = limits[[first(Tier)]]))
Результат:
# A tibble: 13 x 3
# Groups: Tier [5]
Tier Score scale
<int> <int> <dbl>
1 1 95 51
2 2 85 61
3 3 90 80
4 3 87 77.3
5 1 90 56
6 4 88 90
7 5 90 100
8 2 90 70
9 5 75 93.2
10 3 80 71
11 4 72 81
12 1 86 60
13 5 70 91