使用R,通过从事件中减去年龄(以年为2SD)来计算出生日期

时间:2017-10-21 10:45:12

标签: r date dob

我有一个数据框,可以告诉我每个独特的个体在事件发生之日的年龄(小数点后2位):

id                eventDate              ageatEvent
1                 10-Jun-90                  44.07
2                 15-Feb-91                  30.45
3                 20-Dec-93                  59.43
4                 13-Nov-93                  45.84
5                 26-Jul-95                  25.94
6                 10-Mar-99                  21.97
7                 20-Jun-05                  32.28
8                 31-Jan-96                  48.82

使用R,我想计算每个人的出生日期(尽可能精确地给出数据)。 我尝试过使用lubridate但是我不清楚我应该将数字'age'列转换成什么,以便从POSIXct instant eventDate中减去。

非常感谢您的任何帮助。

1 个答案:

答案 0 :(得分:2)

您可以使用lubridate包来执行此操作。

dmy使用订单日 - 月 - 年将字符转换为日期。 dyear将数字转换为持续时间(以年为单位)。

差异给出了结果。

library(tidyverse)
library(lubridate)

df  <- tribble( 
~id, ~eventDate, ~ageatEvent,
1, "10-Jun-90", 44.07,

2, "15-Feb-91", 30.45,

3, "20-Dec-93", 59.43)

df <- df %>%  
  mutate(eventDate = dmy(eventDate), ageatEvent = dyears(ageatEvent)) %>% 
  mutate(dateOfBirth = eventDate - ageatEvent)