R:使用lubridate来计算年龄

时间:2018-06-26 11:47:33

标签: r dplyr lubridate

  var showItem : any[] = [];

  showItem.push({
    id :'001',
    name : 'abc'
  });

使用此代码,我得到以下消息: 警告信息: 所有格式均无法解析。找不到格式。

此外,这也改变了我在不适用时的所有出生日期和年龄。

3 个答案:

答案 0 :(得分:0)

不确定是否要使用lubridate,但是age包中的函数MESS将计算两个日期之间的年龄(以年为单位):

born <- c("1971-08-18", "2000-02-28", "2001-12-20")
check <- c("2018-06-26")
MESS::age(born, check)

返回

[1] 46 16 14

答案 1 :(得分:0)

lubridate中,我们可以将decimal_yearfloor一起使用

# Generate some sample data
d.in <- data.frame(
    dob = c("01-30-1978", "02-10-1960", "03-04-1990"),
    hosp_admission = c("12-20-2015", "06-15-2000", "07-06-2017"))

library(lubridate);
library(tidyverse);
    d.in %>%
        mutate(
            dob = mdy(dob),
            hosp_admission = mdy(hosp_admission),
            age = floor(decimal_date(hosp_admission) - decimal_date(dob)))
#         dob hosp_admission age
#1 1978-01-30     2015-12-20  37
#2 1960-02-10     2000-06-15  40
#3 1990-03-04     2017-07-06  27

答案 2 :(得分:0)

使用来自另一个答案的示例数据对我来说,这似乎是最直接的方法

d.in <- data.frame(
    dob = c("01-30-1978", "02-10-1960", "03-04-1990"),
    hosp_admission = c("12-20-2015", "06-15-2000", "07-06-2017"))


d.in %>%
    mutate(
        dob = mdy(dob),
        hosp_admission = mdy(hosp_admission),
        age = year(hosp_admission) - year(dob))

dob hosp_admission age
1 1978-01-30     2015-12-20  37
2 1960-02-10     2000-06-15  40
3 1990-03-04     2017-07-06  27