Мысли о создании переменной возраста на основе лет - PullRequest
0 голосов
/ 12 февраля 2020

Я пытаюсь создать фиктивную переменную годами. В настоящее время мои данные имеют дату рождения и программу start_date для каждого наблюдения. Мне удалось создать переменную, измеряющую возраст человека в днях, но на самом деле я ищу переменную age_join_date, которая говорит мне следующее:

Individual birth_date    start_date  age_at_join_date
A          1990-12-31    2010-12-31  20 yrs old

B          1990-12-31    2011-12-31  21 yrs old

По сути, меня волнует возраст человека в то время, когда они присоединились к программе, а не в фактическом возрасте.

1 Ответ

1 голос
/ 12 февраля 2020

Ваш вопрос мне не совсем понятен, но я думаю, что вы можете достичь ожидаемого результата, используя некоторые lubridate функции, такие как оператор интервала %--% и years соответствующего интервала.

library(lubridate)
library(dplyr)

tibble::tribble(
  ~Individual,  ~birth_date,  ~start_date,
  "A", "31/12/1990", "31/12/2010",
  "B", "31/12/1990", "31/12/2011"
) %>% 
  mutate_at(vars(ends_with("date")), dmy) %>%  #just making date columns as date
  mutate(age_at_join_date = birth_date %--% start_date/years(1))

#> # A tibble: 2 x 4
#>   Individual birth_date start_date age_at_join_date
#>   <chr>      <date>     <date>                <dbl>
#> 1 A          1990-12-31 2010-12-31               20
#> 2 B          1990-12-31 2011-12-31               21

Создано в 2020-02-12 пакетом Представления (v0.3.0)

...