Я считаю, что простым решением было бы создать фрейм данных для преобразования (eta to eta1):
eta2eta1 <- data.frame(eta = 0:29,
eta1 = c(0, rep(1, 4), rep(2, 5), rep(3, 5), rep(4, 5), rep(5, 5), rep(6, 5)))
eta eta1
0 0
1 1
2 1
3 1
4 1
5 2
6 2
7 2
8 2
9 2
[...]
А затем объединить наборы данных, используя просто left_join
:
# install.packages("tidyverse") # if needed
library(tidyverse)
left_join(originaldata, eta2eta1, by = "eta")
операторы if-else
Более обременительным решением, на мой взгляд, было бы использование ifelse
операторов, таких как:
originaldata %>%
mutate(eta1 = ifelse(eta == 0, 0,
ifelse(eta %in% 1:4, 1,
ifelse(eta %in% 5:9, 2,
ifelse(eta %in% 10:14, 3,
ifelse(eta %in% 15:19, 4,
ifelse(eta %in% 20:24, 5, 6)))))))