首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >以r lubridate格式将字符格式转换为日期格式,导致20年而不是19

以r lubridate格式将字符格式转换为日期格式,导致20年而不是19
EN

Stack Overflow用户
提问于 2020-09-19 14:17:50
回答 1查看 275关注 0票数 1

我需要转换的fctr格式的栏道布,如4/11/64,在婚姻内置数据集到日期格式使用lubridate。我尝试过许多功能,如strptime、as_date等,但4/11/64改为2064年,这对1964年出生的人来说是不正确的。是否有自动将年份转换为19 to的函数?或者,在转换之前,我必须先把"19“写成字符格式?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-09-19 14:24:05

我认为你必须自己加上"19“,除非你想使用hydrostats::four.digit.year

代码语言:javascript
运行
复制
hydrostats::four.digit.year(dmy("4/11/64"), year=1900)

(这个函数只有几行长,所以如果不想依赖于包,就可以复制它)

代码语言:javascript
运行
复制
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 (含2000年)。

另见:为什么69年的两位数年份的strptime在python中返回呢?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63969766

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档