我有一个数据框,可以告诉我每个独特的个体在事件发生之日的年龄(小数点后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中减去。
非常感谢您的任何帮助。
答案 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)