如何将x> 1等参数传递给ifelse函数

时间:2016-04-25 16:42:30

标签: r sapply grepl

我有一个像

这样的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 个答案:

答案 0 :(得分:3)

使用与上述相同的数据,更好的方法是使用?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

答案 1 :(得分:1)

您不需要greplsapply。但是我不确切地知道你想要什么条件。这是一种嵌套ifelse语句以满足条件的方法:如果Age&lt; = 1则返回“Young”,Else If Age&gt; 3返回“Old”,否则返回“Adult”

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