我试图创建两个新的列的人的年龄和他们的年龄组(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对于大数据集来说,在最有效的方法上做这件事的最好方法是什么?谢谢
发布于 2018-06-28 09:44:37
像这样吗?顺便说一下,我稍微调整了你在你的例子中使用的年龄组,因为使用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)))https://stackoverflow.com/questions/51079440
复制相似问题