我需要使用lubridate将dob列的fctr格式(例如4/11/64)转换为Marriage内置数据集中的日期格式。我尝试了很多函数,例如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
:
'%y'不带世纪的年份(00-99)。在输入时,值00到68分别以20和69到99分别以19为前缀-这是2018年POSIX标准指定的行为,但是它也说``预计在将来的版本中,默认世纪是从2推断的位数字的年份将改变”。
该标准本身可在此处获得:
如果未指定世纪,则[69,99]范围内的值应指1969年至1999年(含),而[00,68]范围内的值应指2000年至2068年(含)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句