Использование ifelse
a base-r
решение
df$Category <- ifelse(df$Age<=3, "Infant", ifelse(df$Age<=6, "Toddler", ifelse(df$Age<=13, "Adolescence", ifelse(df$Age<=19, "Teenage", ifelse(df$Age<=59, "Adult", "Senior")))))
# -------------------------------------------------------------------------
# df
# Id Age Category
# 1 1 1 Infant
# 2 2 5 Toddler
# 3 3 10 Adolescence
# 4 4 12 Adolescence
# 5 5 3 Infant
# 6 6 23 Adult
# 7 7 55 Adult
# 8 8 42 Adult
# 9 9 92 Senior
# 10 10 78 Senior
# 11 11 33 Adult
# 12 12 44 Adult
# 13 13 25 Adult
# 14 14 13 Adolescence
# 15 15 10 Adolescence
# 16 16 19 Teenage
# 17 17 45 Adult
# 18 18 39 Adult
Использование dplyr
mutate
и case_when
library(dplyr)
df <- df %>%
mutate(Category =
case_when(
Age <=3 ~ "Infant",
Age <=6 ~ "Toddler",
Age <=13 ~ "Adolesence",
Age <=19 ~ "Teenage",
Age <=59 ~ "Adult",
TRUE ~ "Senior"
)
)
# -------------------------------------------------------------------------
# df
# Id Age Category
# 1 1 1 Infant
# 2 2 5 Toddler
# 3 3 10 Adolesence
# 4 4 12 Adolesence
# 5 5 3 Infant
# 6 6 23 Adult
# 7 7 55 Adult
# 8 8 42 Adult
# 9 9 92 Senior
# 10 10 78 Senior
# 11 11 33 Adult
# 12 12 44 Adult
# 13 13 25 Adult
# 14 14 13 Adolesence
# 15 15 10 Adolesence
# 16 16 19 Teenage
# 17 17 45 Adult
# 18 18 39 Adult
#
См. Комментарии выше, а также вам нужнопредоставить воспроизводимый пример, чтобы получить цель решения вашей конкретной проблемы. Предоставление воспроизводимого примера гарантирует быстрый ответ.
Пример данных
df <- data.frame(Id = seq(1,18,1),
Age = c(1,5,10, 12, 3, 23, 55, 42, 92, 78, 33, 44, 25, 13, 10, 19, 45, 39))
Надеюсь, это поможет.