[英]extracting “yearmon” from character format and calculating age in R
我有兩列數據:
DoB: yyyy/mm
Reported date: yyyy/mm/dd
兩者都是字符格式。
我想通過從報告日期減去DoB來計算年齡,而不向DoB添加虛構的日子,因此年齡為28.5(意味着28歲半)。
請有人幫我編碼,我很難過!
非常感謝R新手。
library(lubridate)
a <- "2010/02"
b <- "2014/12/25"
c <- ymd(b) - ymd(paste0(a, "/01")) # I don't think this can be done without adding a fictional day
c <- as(c/365.25, "numeric")
如果日期是:您希望年齡是多少:
DoB: 2015/01
Reported date: 2015/01/30
正如所建議的那樣, lubridate
是一個很好的日期工作包。 你可能想要一些使用difftime
版本。 您還可以通過設置truncated=1
來使用ymd
作為yyyy / mm,這意味着該字段可能會丟失。
df <- data.frame(DoB = c("1987/08", "1994/04"),
Report_Date = c("2015/03/05","2014/07/04"))
library(lubridate)
df$age_years <- with(df,
as.numeric(
difftime(ymd(Report_Date),
ymd(DoB, truncated=1)
)/365.25))
df
DoB Report_Date age_years
1 1987/08 2015/03/05 27.59206023
2 1994/04 2014/07/04 20.25735797
不幸的是, difftime
沒有“年”單位,因此您還需要划分您獲得的“天數”輸出。
在動物園里使用"yearmon"
課程。 它代表了時間歲月+分數(其中部分是集合0,1/12,...,11/12)等不需要添加虛構的天數:
library(zoo)
as.yearmon("2012/01/10", "%Y/%m/%d") - as.yearmon("1983/07", "%Y/%m")
贈送:
[1] 28.5
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.