1

I have a dataset as shown below. I want to create a new variable age_group using ifelse function based on below given conditions.

if age is below 20, age_group is "0-20"
if age is between 20 to 40, age_group is "20-40"
if age is between 40 to 60, age_group is "40-60"
if age is above 60, age_group is ">60"

X  state sex diag    death status T.categ  age
1   AL   M   10905   11081  D     hs       20
2   AL   M   11029   11096  D     hs       53
3   AL   M   9551    9983   D     hs       40
4   AL   M   9577    9654   D     haem     60

Please suggest how to use ifelse function to get desired results.

Learner_001
  • 15
  • 1
  • 6

1 Answers1

0

We can use cut from base R

df$age_group <- with(df, cut(age, breaks = c(0, 20, 40, 60, Inf), 
      labels = c('0-20', '20-40', '40-60', '>60'))

Or using ifelse

df$age_group <- with(df, ifelse(age < 20, '0-20', 
                           ifelse(age >=20 & age < 40, "20-40",
                              ifelse(age >=40 & age < 60, "40-60",
                                  ">60"))))

Or another option is case_when

library(dplyr)
df %>%
     mutate(age_group = case_when(age < 20 ~ '0-20',
                 age >=20 & age < 40 ~"20-40",
                 age >=40 & age < 60 ~ "40-60",
                 TRUE ~ ">60"))
akrun
  • 874,273
  • 37
  • 540
  • 662