【问题标题】:R: using lubridate to calculate ageR:使用 lubridate 计算年龄
【发布时间】:2018-06-26 11:47:33
【问题描述】:
library(plyr)
library(dplyr)
library(lubridate)

d.in <- read.csv("C:/Users/Person/Documents/dataset.csv")
d.in <- mutate(d.in, dob=mdy(dob))
summary(d.in$dob)

d.in <- mutate(d.in, dob = mdy(dob), hosp_admission = mdy(hosp_admission))
d.in <- mutate(d.in, age_at_admission = 
interval(dob,hosp_admission)/dyears(1))

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

此外,它会更改我所有的出生日期和入院时的年龄。

【问题讨论】:

  • 欢迎来到 SO。请通过dput(head(d.in)) 添加一些数据。如果没有数据示例,我们无法重现您的错误。阅读how to create a reproducible example 上的 SO 帖子并关注 SO 之旅。

标签: r dplyr lubridate


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    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
    

    【讨论】:

      【解决方案3】:

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

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

      返回

      [1] 46 16 14
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-06-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-03-26
        • 1970-01-01
        相关资源
        最近更新 更多