我已经阅读了 lubridate 包手册,并通过我的问题的各种排列查询了 Stack Overflow,但没有找到针对我的具体问题的答案。
我想做的是计算事件发生时的年龄(以月为单位)作为出生日期和某些特定事件日期之间的差异。
因此,我使用以下命令导入了 SAS 数据集sas7bdat
使用以下代码将我的 SAS 日期变量(DOB 和事件)打包并转换为 R 对象:
df$DOB <- as.Date(df$DOB, origin="1960-01-01")
df$DOB1 <- ymd(df$DOB)
对于事件变量也是如此:
df$Event <- as.Date(df$Event, origin="1960-01-01")
df$Event1 <- ymd(df$Event)
然而,DOB 有一些 NA 值。因此,对于以下代码,我想用它来计算年龄(以月为单位)。
df$interval <- new_interval(df$DOB1,df$Event1)
df$Age1 <- df$interval %/% months(1)
我收到错误:
est[start + est * per
我究竟做错了什么?我尝试过 if/else 函数,但可能使用不正确。
(注意:对于 SAS 程序员,我尝试生成与以下函数相同的结果:
IF DOB ne . THEN Tage=Floor(intck('month',DOB,Event)-(Day(Event)<Day(DOB)));