R as.日期转换世纪错误
在我的数据集中,有一列包含了许多雇员的出生日期,所以他们中的许多人的出生日期在1960年到1980年之间。我正在尝试使用as.Date对它们进行格式化,其中一些结果与我的预期不符 例如:R as.日期转换世纪错误,r,date,R,Date,在我的数据集中,有一列包含了许多雇员的出生日期,所以他们中的许多人的出生日期在1960年到1980年之间。我正在尝试使用as.Date对它们进行格式化,其中一些结果与我的预期不符 例如: as.Date("7/1/61","%m/%d/%y") 我希望它返回“1961-07-01”,但它返回“2061-07-01”。阅读: ?strptime # where all the formatting details are available %y 没有世纪的年份(00-99)。输入时,值00
as.Date("7/1/61","%m/%d/%y")
我希望它返回“1961-07-01”,但它返回“2061-07-01”。阅读:
?strptime # where all the formatting details are available
%y没有世纪的年份(00-99)。输入时,值00到68的前缀为20,69到99的前缀为19,这是2004年和2008年POSIX标准规定的行为,但它们也表示“预计在未来版本中,从两位数年份推断的默认世纪将发生变化” 因此,您需要一个regex来回溯日期,在发送到as.Date之前,最好先进行字符串转换:
dvec <- c("7/1/61", "7/1/79")
as.Date( sub("/(..$)", "/19\\1",dvec) , "%m/%d/%Y")
[1] "1961-07-01" "1979-07-01"
dvec我认为POSIX委员会应该禁止两位数年份,并废除%y格式。这并不是说我们现在需要节约墨水……是的,对于那些不能影响数据来源并定期以yy-mm-dd
格式提供服务的数据科学家来说,这将是非常棒的。。。我是根据经验说的,从来没有拒绝过两位数的年份。我认为as.Date
函数应该有一个可选参数来设置它。