【问题标题】:Using R, calculate Date of Birth by subtracting age (in years to 2SD) from an event使用 R,通过从事件中减去年龄(以年为 2SD)来计算出生日期
【发布时间】:2017-10-21 10:45:11
【问题描述】:

我有一个数据框,可以为我提供事件发生日期每个唯一个人的年龄(精确到小数点后 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,但不清楚我应该将数字“年龄”列转换为什么,以便从 POSIXct 即时事件日期中减去。

非常感谢您的任何帮助。

【问题讨论】:

  • 解决这个问题的简单方法是不要将您的数据存储为事件发生时的年龄。
  • 小数年对我来说甚至没有意义,因为每个月的天数不是固定的。你应该告诉我们这个数字是如何得出的。

标签: r date


【解决方案1】:

您可以使用 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)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-07-06
    • 2021-04-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多