【问题标题】:add column age from column birthdate in R从 R 中的列生日添加列年龄
【发布时间】:2022-12-03 10:25:30
【问题描述】:
Name Date
A 1990-10-7
B 1997-11-20

我想添加年龄列将日期转换为年龄

我试试这个

data$age <- age_calc(as.Date(data$dob, "%Y/%m/%d"), units = "years")

但我得到了这个错误

Error in if (any(enddate < dob)) { : 
  missing value where TRUE/FALSE needed

【问题讨论】:

  • 您好 Ahmed,您的专栏名称是“dob”还是“Date”?

标签: r dataframe multiple-columns


【解决方案1】:

错误是您提供给as.Date 函数的格式

> df$age <- age_calc(as.Date(df$Date, "%Y-%m-%d"), units = "years")
> df
  Name       Date      age
1    A  1990-10-7 32.15342
2    B 1997-11-20 25.03288

请注意,您的Date 变量使用- 作为分隔符而不是/,因此您必须在as.Date 中使用-

【讨论】:

    【解决方案2】:

    我建议安装并调用 lubridate 包。

    然后:

    data$age <- trunc((data$Date %--% today()) / years(1))

    【讨论】:

      【解决方案3】:

      看起来 age_calc() 函数需要一个 dob(出生日期)和一个 enddate(结束日期)参数,但它没有同时接收到这两个参数。这可能就是您看到有关缺失值的错误消息的原因。

      要解决此问题,您需要确保将 dob 和 enddate 参数都提供给 age_calc() 函数。例如,您可以使用以下代码根据出生日期和当前日期计算数据中每个人的年龄:

      data$age <- age_calc(as.Date(data$dob, "%Y/%m/%d"), 
                           as.Date(Sys.Date()), units = "years")
      

      或者,您可以向 age_calc() 函数提供特定的结束日期,而不是使用当前日期。这将允许您根据特定的结束日期而不是当前日期来计算数据中每个人的年龄。

      我希望这有帮助!

      【讨论】:

      • 谢谢你的回答,我也试过了,我有同样的错误
      • enddate 的默认值是当前日期,不需要使用 as.Date(Sys.Date()) `
      猜你喜欢
      • 2017-02-14
      • 2019-11-30
      • 2015-01-21
      • 1970-01-01
      • 2012-02-06
      • 1970-01-01
      • 1970-01-01
      • 2013-08-27
      相关资源
      最近更新 更多