将数字列转换为 R 识别的日期

convert numeric column to dates recognized by R

如何将这个日期数字向量转换为 R 可以识别的日期格式?

date <- c(29101958L, 10121957L, 27091953L, 23021960L, 
           6031967L, 10011968L, 10101958L, 9101992)

我想要这样的输出:

'1958-10-29', '1957-12-10', '1953-09-27', '1960-02-23', '1967-03-06', '1968-01-10', '1958-10-10', '1992-10-09'

然后我想通过向量日期与 2016-12-31 的差值来计算年龄。

感谢任何帮助。

我们可以使用 lubridate

中的 dmy
library(lubridate)
newdate <- dmy(date)

newdate
#[1] "1958-10-29" "1957-12-10" "1953-09-27" "1960-02-23" "1967-03-06" "1968-01-10" "1958-10-10" "1992-10-09"

并获取新日期之间的年差

as.integer(difftime(as.Date('2016-12-31'), newdate, units = 'days')/365)
#[1] 58 59 63 56 49 49 58 24

Base R 选项使用 as.Date :

as.Date(sprintf('%08d', date), '%d%m%Y')

#[1] "1958-10-29" "1957-12-10" "1953-09-27" "1960-02-23" "1967-03-06"
#[6] "1968-01-10" "1958-10-10" "1992-10-09"

我们使用 sprintf 为个位数日期添加前导零。