通过在R中添加期间类对象和lubridate来计算年和月的年龄

时间:2017-06-08 17:53:54

标签: r lubridate period

我的数据有基线年龄的变量,以及自基线观察以来的月数的跟进变量。两者都是仅带整数的数字向量。我想在跟进时计算年龄。当我使用lubridate将这些变量解析为周期对象并将它们加在一起时,我会得到5年14个月的结果。理想情况下 - 我希望这是6年2个月。

实施例

library(dplyr)
library(lubridate)
library(magrittr)

set.seed(080617)
df <- 
  tibble(year = sample(20),
     month = sample(20))

df %<>% 
  mutate(year = years(year)) %>% 
  mutate(month = months(month)) %>%
  mutate(age = (year + month))
df

我尝试使用df$age <- as.period(df$age, units = "years")无济于事。

有什么建议吗?

1 个答案:

答案 0 :(得分:1)

这可以为您提供您正在寻找的结果。我将列名更改为year.col和month.col,以便更容易遵循逻辑

library(dplyr)
library(lubridate)
library(magrittr)

set.seed(080617)
df <- 
  tibble(year.col = sample(20),
         month.col = sample(20))

df %<>% 
  mutate(year.col = years(year.col)) %>% 
  mutate(month.col = months(month.col)) %>%
  mutate(age = year.col + years(month(month.col) %/% 12) + months(month(month.col) %% 12))