将数字列转换为 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
为个位数日期添加前导零。
如何将这个日期数字向量转换为 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
为个位数日期添加前导零。