簡體   English   中英

從字符格式中提取“yearmon”並計算R中的年齡

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM