繁体   English   中英

将字符格式转换为 r lubridate 中的日期格式,领先年份 20 而不是 19

[英]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 年(含)。

另请参阅: 为什么 69 的两位数年份的 strptime 在 python 中返回 1969?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM