Как передать параметр типа 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