将R中birthdate列中的age列相加

plicqrtu  于 2022-12-06  发布在  其他
关注(0)|答案(3)|浏览(119)

| 名称名称名称|日期|
| - -|- -|
| A级|一九九○年十月七日|
| B|一九九七年十一月二十日|
我想添加age列,以便将日期转换为年龄
我试过这个

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
clj7thdc

clj7thdc1#

错误的格式是您提供给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中使用-

h7appiyu

h7appiyu2#

我建议安装和调用lubridate包。
然后道:
数据$年龄〈- trunc((数据$日期%--%今天())/年(1))

svmlkihl

svmlkihl3#

看起来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()函数,而不使用目前的日期。这样您就可以根据特定的结束日期而不是目前的日期来计算数据中每个人的年龄。
我希望这对你有帮助!

相关问题