根据范围有条件地在数据框中填充一个值

Conditional fill a value in Data frame based on ranges

我想根据数据框中的年龄范围进行分组。 我试过了:

DF$AgeGroup <- ifelse(DF$Age >= 20 & DF$Age <= 29, "G2", NA)
DF$AgeGroup <- ifelse(DF$Age >= 30 & DF$Age <= 39, "G3", NA)
DF$AgeGroup <- ifelse(DF$Aag >= 40 & DF$Age <= 49, "G4", NA)
...

但是下一行替换了之前代码分配的数据。 我可以将分组管理到单独的列中,然后将它们合并,但必须有一种简单直接的方法来做到这一点。有人可以帮忙吗?

DF <- data.frame(Age = sample(1:100, 25))

cuts <- c(0, 20, 30, 40, 50, 100)
groups <- c("G1", "G2", "G3", "G4", "G5")

DF$AgeGroup <- cut(DF$Age, breaks = cuts, labels = groups, right = FALSE)

DF

#    Age AgeGroup
# 1   87       G5
# 2   88       G5
# 3   61       G5
# 4    8       G1
# 5   29       G2
# 6   25       G2
# 7   55       G5
# 8   44       G4
# 9   76       G5
# 10  86       G5
# 11  30       G3
# 12  99       G5
# 13  95       G5
# 14  62       G5
# 15  70       G5
# 16  82       G5
# 17  97       G5
# 18  50       G5
# 19  84       G5
# 20  35       G3
# 21  60       G5
# 22  20       G2
# 23   2       G1
# 24  19       G1
# 25  33       G3

在您的代码中,您必须将 NA 替换为变量名称,在本例中为 AgeGroup。这样,ifelse 函数用以前的值替换 FALSE 值。

你必须从第二行开始...

DF$AgeGroup <- ""
DF$AgeGroup <- ifelse(DF$Age >= 20 & DF$Age <= 29, "G2", NA)
DF$AgeGroup <- ifelse(DF$Age >= 30 & DF$Age <= 39, "G3", DF$AgeGroup)
DF$AgeGroup <- ifelse(DF$Aag >= 40 & DF$Age <= 49, "G4", DF$AgeGroup)

...