我有一个像
这样的data.frameAge
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
只有当我输入一个号码时它才有效。
答案 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)
您不需要grepl
或sapply
。但是我不确切地知道你想要什么条件。这是一种嵌套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