根据范围有条件地在数据框中填充一个值
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)
...
我想根据数据框中的年龄范围进行分组。 我试过了:
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)
...