我正在尝试根据数据框创建两个新的人口年龄和年龄组(每隔5年)的列。 当前数据帧例如:
Person Date of Birth
A 1/2/2000
B 3/2/1998
C 4/5/2008
预期结果是:
Person Date of Birth Age Age-Group
A 1/2/2000 18 15-20
B 3/2/1990 28 25-30
C 4/5/2008 10 5-10
对于大型数据集,以最有效的方式执行此操作的最佳方法是什么?谢谢
答案 0 :(得分:0)
像这样?顺便说一句,我稍微调整了您在示例中使用的年龄组,因为使用5-10和15-20意味着您也会使用11-14岁的年龄组,这对我来说似乎很奇怪。
df <- read.table(text = "
Person DateofBirth
A 1/2/2000
B 3/2/1998
C 4/5/2008", header = T)
library(lubridate)
df$age <- interval(as.Date(df$DateofBirth, "%d/%m/%Y"), Sys.Date()) %/% years(1)
df$agegroup <- cut(df$age, seq(5,30,5), c("5-10", "11-15", "16-20", "21-25", "25-30"))
df
Person DateofBirth age agegroup
1 A 1/2/2000 18 16-20
2 B 3/2/1998 20 16-20
3 C 4/5/2008 10 5-10
如果您的年龄段更多,您也可以考虑将最后一个切入参数归纳如下:
df1 <- data.frame(age = 1:100)
df1$agegroup <- cut(df1$age, seq(0,100,5), paste0(seq(1,96, 5), "-", seq(5,100,5)))