【问题标题】:R - creating a complete data frame by combining from other data framesR - 通过从其他数据帧组合创建一个完整的数据帧
【发布时间】:2018-06-28 18:02:53
【问题描述】:

我正在尝试根据数据框中的出生日期创建两个新列,其中包含人们的年龄和他们的年龄组(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

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

【问题讨论】:

标签: r rstudio


【解决方案1】:

这样的?顺便说一句,我稍微调整了您在示例中使用的年龄组,因为使用 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

如果你有更多的年龄组,你也可以考虑像这样概括 last cut 参数:

df1 <- data.frame(age = 1:100)
df1$agegroup <- cut(df1$age, seq(0,100,5), paste0(seq(1,96, 5), "-", seq(5,100,5)))

【讨论】:

    猜你喜欢
    • 2019-02-27
    • 2023-01-08
    • 1970-01-01
    • 1970-01-01
    • 2018-04-20
    • 2018-11-20
    • 2022-08-12
    • 2021-04-15
    • 1970-01-01
    相关资源
    最近更新 更多