Как передать параметр типа x>1 в функцию ifelse

У меня есть data.frame, как

Age
1
2
3
4
5

Я хотел бы сделать новую переменную "AgeGR"

getAgeGR = function(x) {
  xInt = as.integer(x)
  ifelse( grepl(0, xInt), "Puppy", 
          ifelse(grepl(|What to put here|, xInt), "Young", 
                 ifelse(grepl(8, xInt), "Adult","Old") ))}

df$AgeGR = sapply(df$Age, getAgeGR)

Я не знаю, что здесь поставить. я пытался

x>1
>1

Работает только когда я ставлю один номер.

2 ответа

Решение

Используя те же данные, что и выше, лучше использовать ?cut, Повторные операторы ifelse будут работать, но они неэффективны с точки зрения набора текста и обработки при масштабировании.

df
#   Age
# 1   1
# 2   2
# 3   3
# 4   4
# 5   5

df$AgeGR <- cut(df$Age, c(-Inf, 1,3, Inf), c("Young", "Adult", "Old"))
df
#   Age AgeGR
# 1   1 Young
# 2   2 Adult
# 3   3 Adult
# 4   4   Old
# 5   5   Old

Вам не нужно grepl или же sapply, Но я не знаю точно, какие условия вы хотите для этой колонки. Вот способ вложить ifelse заявления для выполнения условия: если возраст <= 1, вернуть "молодые", в противном случае, если возраст> 3, вернуть "старые", в противном случае вернуть "взрослый"

df$AgeGR <- ifelse(df$Age<=1,"Young",ifelse(df$Age>3,"Old","Adult"))

> df
  Age AgeGR
1   1 Young
2   2 Adult
3   3 Adult
4   4   Old
5   5   Old
Другие вопросы по тегам