Я бы рекомендовал более элегантное решение case_when
, которое вы уже получили. Однако ifelse
также может выполнять эту работу, используя несколько функций ifelse
с той же логикой, что и ответ от markhogue (+1). Смотрите документацию по ifelse
; он должен знать, что делать, когда критерии не соответствуют - в этом случае есть три случая, когда это использует другой ifelse
, и один, где это NA
. Первый аргумент - это критерии соответствия (, если ), второй - что делать, если критерии совпадают ( get ), а третий - что делать, если критерии не соответствуют совпало ( иначе ).
set.seed(1)
df<-data.frame('mon' = sample(1:12, replace = T, size = 20))
df[,'qtr'] <-
ifelse(df[,'mon'] >= 1 & df[,'mon'] <= 3, 4,
ifelse(df[,'mon'] >= 4 & df[,'mon'] <= 6, 1,
ifelse(df[,'mon'] >= 7 & df[,'mon'] <= 9, 2,
ifelse(df[,'mon'] >= 10 & df[,'mon'] <= 12, 3, NA))))