首页 > 解决方案 > 如何计算R中两条记录之间的日期差异

问题描述

大家好,我的df有 3 列和 100 多行,看起来像

PID  Record_date     DOB
123  25-02-2009  22-08-1944
165  20-04-2017  22-08-1944

我试图计算 PID 的年龄,但结果如下

PID  Record_date     DOB        Age
123  25-02-2009   22-08-1944    65
165  20-04-2017   22-08-1944    73

我通过以下代码计算了 PID 的年龄

df$Age <- as.numeric(df$Record_date - df$DOB)/365
df$Age <- round (df$Age, digits = 0)

我的预期结果和结果

PID  Record_date        DOB     Age
123  25-02-2009    22-08-1944   64
165  20-04-2017    22-08-1944   72

提前致谢

标签: rdplyr

解决方案


period您可以从包中创建一个对象lubridate并提取年份信息。

library(dplyr)
library(lubridate)

df %>%
  mutate(across(c(Record_date, DOB), dmy),
         Age = as.period(DOB %--% Record_date)$year)

#   PID Record_date        DOB Age
# 1 123  2009-02-25 1944-08-22  64
# 2 165  2017-04-20 1944-08-22  72

如果您删除$year,您可以获得期间的详细信息:

#                 Age
# 64y 6m  3d 0H 0M 0S
# 72y 7m 29d 0H 0M 0S

注: DOB %--% Record_date是 的快捷方式interval(DOB, Record_date)


推荐阅读