R-通过与其他数据帧组合来创建完整的数据帧

时间:2018-06-28 09:34:31

标签: r rstudio

我正在尝试根据数据框创建两个新的人口年龄和年龄组(每隔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

对于大型数据集,以最有效的方式执行此操作的最佳方法是什么?谢谢

1 个答案:

答案 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)))