[英]convert character format to date format in r lubridate, leading year 20 not 19
我需要使用 lubridate 将 Marriage 内置数据集中列 dob 的 fctr 格式(例如 4/11/64)转换为日期格式。 我尝试了很多函数,strptime,as_date等,但是4/11/64变成了2064年,这对于1964年出生的人来说是不正确的。有没有自动将年份转换为19xx的函数? 或者我必须在转换之前先将前导“19”放在字符格式中?
我认为您必须自己添加“19”,除非您想使用hydrostats::four.digit.year
:
hydrostats::four.digit.year(dmy("4/11/64"), year=1900)
(该函数只有几行长,所以如果你不想依赖包,你可以复制它)
function (x, year = 1968) {
n <- as.numeric(strftime(x, format = "%y"))%%100
Y <- ifelse(n > year%%100, 1900 + n, 2000 + n)
return(Y)
}
否则,你就会被 POSIX 标准所困扰。 "%y"
是用于转换?strptime
(或一位)数字年份的标准标签,来自?strptime
:
'%y' 没有世纪的年份 (00-99)。 在输入时,值 00 到 68 以 20 为前缀,69 到 99 以 19 为前缀——这是 2018 POSIX 标准指定的行为,但它也说“预计在未来的版本中,默认世纪是从 2 -数字年份会改变'。
标准本身可在此处获得:
如果未指定世纪,则 [69,99] 范围内的值应指 1969 年至 1999 年(含),[00,68] 范围内的值应指 2000 年至 2068 年(含)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.