Instead of a cumbersomely nested ifelse
statement, use dplyr’s mutate
and case_when
functions instead.
ifelse
version
df$day_part <-
with(df,
ifelse(Hour >= 6 & Hour < 12, 'Morning',
ifelse(Hour >= 12 & Hour < 17, 'Afternoon',
ifelse(Hour >= 17 & Hour < 20, 'Evening',
ifelse(Hour >= 20 | Hour < 6, 'Night',
'Unknown'
)))))
mutate
… case_when
version
df <- df %>%
mutate(., day_part = with(., case_when(
(Hour >= 6 & Hour < 12) ~ 'Morning',
(Hour >= 12 & Hour < 17) ~ 'Afternoon',
(Hour >= 17 & Hour < 20) ~ 'Evening',
(Hour >= 20 | Hour < 6 ) ~ 'Night',
is.na(Hour) ~ 'Unknown',
TRUE ~ 'Unknown'
)))
Reference
For more on case_when
: https://dplyr.tidyverse.org/reference/case_when.html
Leave a Reply