首页 > 解决方案 > 为年龄创建年龄范围 - R

问题描述

我有这个数据框:

> set.seed(100)
> df <- data.frame(Age = sample(18:70, 30, replace = TRUE),
                 Sex = sample(0:1, 30, replace =TRUE),
                 stringsAsFactors = FALSE)
> df
   Age Sex
1   34   0
2   31   1
3   47   0
4   20   1
5   42   1
6   43   1
7   61   0
8   37   1
9   46   1
10  27   0
11  51   0
12  64   1
13  32   1
14  39   1
15  58   1
16  53   0
17  28   1
18  36   1
19  37   0
20  54   0
21  46   0
22  55   0
23  46   0
24  57   0
25  40   1
26  27   0
27  58   0
28  64   0
29  47   1
30  32   0

我想用这个范围为每个年龄创建另一个年龄范围:

> df_range <- data.frame(Age_Range = c("Lower than 26", "26 to 30", "31 to 35", "36 to 40", "41 to 45", "46 to 50", "51 to 55", "56 to 60", "61 to 65", "More than 65"),
                 stringsAsFactors = FALSE)
> df_range
       Age_Range
1  Lower than 26
2       26 to 30
3       31 to 35
4       36 to 40
5       41 to 45
6       46 to 50
7       51 to 55
8       56 to 60
9       61 to 65
10  More than 65

我知道我可以通过创建一个巨大的表来做到这一点,其中第一列包含所有可能的年龄(例如,-1000 到 1000 以避免异常值),第二列是每个年龄的范围,我也可以使用ifelse()for每个范围。但是,没有更有效的方法吗?也许类似于 TRUE VLOOKUP 在 excel 中?

标签: rdplyrdata-manipulation

解决方案


要以均匀的范围切割,您可以使用
df$age_range = cut_width(df$Age,width=5,boundary=0)


推荐阅读