【问题标题】:lubridate, calculate years, return NAlubridate,计算年份,返回 NA
【发布时间】:2016-07-04 14:56:10
【问题描述】:

您好,我在计算某个知道出生日期的受试者的年龄时遇到问题,我正在使用 lubridate 包,示例:

> head(df$hs_dob1c)
[1] 2002-01-30 2004-12-29 2005-09-15 2002-12-20 2005-07-28 1995-08-28

首先我设置:

df$hs_dob1c <- as.Date(df$hs_dob1c, format='%y-%m-%d')

然后:

today <- as.Date(Sys.Date(), format="%y-%m-%d")
ref_date <- as.Date(df$hs_dob1c, format="%y-%m-%d")

问题是当我设置参考时,因为:

> head(df$hs_dob1c)
[1] NA NA NA NA NA NA

【问题讨论】:

    标签: r date lubridate


    【解决方案1】:

    不确定您在哪里使用lubridate,但请尝试

    df$hs_dob1c <- as.Date(df$hs_dob1c, format='%Y-%m-%d')
    

    而不是

    df$hs_dob1c <- as.Date(df$hs_dob1c, format='%y-%m-%d')
    

    %y 表示 2 位数年份,您有 4 位数年份应称为 %Y

    【讨论】:

      【解决方案2】:

      到目前为止,您还没有使用 lubridate,但它也可以与基础 R 一起使用:

      hs_dob1c <- as.Date(
        c("2002-01-30", "2004-12-29", "2005-09-15", "2002-12-20", "2005-07-28" ,"1995-08-28"),
        format='%Y-%m-%d')
      
      today <- as.Date(Sys.Date(), format="%Y-%m-%d")
      
      difftime(today, hs_dob1c, units = "days")
      # Time differences in days
      # [1] 5269 4205 3945 4945 3994 7616
      

      您必须将format='%y-%m-%d' 更改为format='%Y-%m-%d'

      使用lubridate,它将像这样工作:

      library("lubridate")
      hs_dob1c <- ymd(
        c("2002-01-30", "2004-12-29", "2005-09-15", "2002-12-20", "2005-07-28" ,"1995-08-28"))
      
      today <- ymd(Sys.Date())
      
      difftime(today, hs_dob1c,units = "days")
      # Time differences in days
      # [1] 5269 4205 3945 4945 3994 7616
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-01-18
        • 2017-06-02
        • 2021-11-12
        相关资源
        最近更新 更多