I would like to use lubridate
to calculate age in years given their date of birth and today's date. Right now I have this:
library(lubridate) today<-mdy(08312015) dob<-mdy(09071982) today-dob
which gives me their age in days.
Lubridate is an R package that makes it easier to work with dates and times. Below is a concise tour of some of the things lubridate can do for you. Lubridate was created by Garrett Grolemund and Hadley Wickham, and is now maintained by Vitalie Spinu.
lubridate is part of Hadley's tidyverse ecosystem but is not loaded by the tidyverse package, which includes only what he thought were the core components.
This is the lubridate
approach I would take:
interval(dob, today) / years(1)
Yields the answer of 32
years.
Note that the function will complain that it cannot express the remainder of the fraction of the year. This is because year is not a fixed concept, i.e. 366 in leap years and 365 in non-leap years. You can get an answer with more detail in regard to the number of weeks and days:
interval_period = interval(dob, today) full_year = interval_period %/% years(1) remaining_weeks = interval_period %% years(1) %/% weeks(1) remaining_days = interval_period %% years(1) %% weeks(1) %/% days(1) sprintf('Your age is %d years, %d weeks and %d days', full_year, remaining_weeks, remaining_days) # [1] "Your age is 32 years, 51 weeks and 1 days"
Note that I use %/%
for division and %%
as modulo to get the remaining weeks/days after subtracting the full years/weeks.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With