【问题标题】:how can i convert birth date to age?如何将出生日期转换为年龄?
【发布时间】:2026-02-02 20:20:04
【问题描述】:

我在数据框“fecha de nacimiento”中有列,其中包含出生日期,我需要计算每个人的年龄。我试过以下代码:

ptje_2020 <- ptje_2020 %>%
  mutate(AGE = age_calc(FECHA_NACIMIENTO_as_date,units = "years"))

但它给出了这个错误:

Error: Problem with `mutate()` column `AGE`.
ℹ `AGE = age_calc(FECHA_NACIMIENTO_as_date, units = "years")`.
x missing value where TRUE/FALSE needed
Backtrace:
 1. `%>%`(...)
 8. base::.handleSimpleError(...)
 9. dplyr:::h(simpleError(msg, call))

我该如何修复它

【问题讨论】:

  • age_calc 来自哪里?它是来自一个包,还是你自己写的?如果是后者,请发布代码。
  • 来自一个包,它可能来自 eeptools、lubridate 或 tidiverse 我为这个任务安装这些包
  • @EvelynGiovanskaSilva 我猜你是否缺少一些日期(列中的一些可能是NA)。您可以通过dput(head(ptje_2020)) 分享您拥有的一些数据并将结果复制/粘贴到您的问题中以使其可重现吗?
  • 为了让人们能够提供帮助,我们需要知道您正在使用哪些包,这意味着您需要知道您的函数的确切来源。了解您正在使用的工具也只是基本的调试实践
  • @EvelynGiovanskaSilva,要找出函数的来源,您可以键入 ??age_calc 以查看已安装的具有该函数的软件包列表。在这种情况下,它来自eeptools,就像你说的那样。

标签: r


【解决方案1】:

#试试这个 - 年龄来自 dob

df1$Current_age = as.numeric(difftime(Sys.Date(),FECHA_NACIMIENTO$Date_of_birth, units = "weeks"))/52.25
df1

【讨论】:

  • 这没有给出整数。通常人们期望年龄是一个整数。使用as.integer() 而不是as.numeric() 来获取整数。
  • ptje2020$AGE = as.numeric(difftime(Sys.Date(),ptje_2020$FECHA_NACIMIENTO, units = "weeks"))/52.25 我试过这个,但它给了我这个错误
  • as.POSIXct.numeric(time2) 中的错误:必须提供“原点”
  • @DDphp,我刚刚看到eeptools::age_calc()返回非整数值。