Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R as.日期转换世纪错误_R_Date - Fatal编程技术网

R as.日期转换世纪错误

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

在我的数据集中,有一列包含了许多雇员的出生日期,所以他们中的许多人的出生日期在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到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
函数应该有一个可选参数来设置它。