用两位数的年份将因子转换为日期

时间:2019-08-21 17:32:54

标签: r date type-conversion as.date

我需要您的帮助: 我在CSV文件中有一个“出生日期”列,类型为“因子”。我想将类型转换为“日期”。

列数据:

8-Dec-09  
8-Dec-12
8-Dec-14 
8-Dec-42 
8-Dec-49 
8-Dec-53 
8-Dec-61  
8-Dec-62

前三行的年份是:2009、2012和2014。

其余年份为:1942、1949、1953、1961和1962

使用as.Date并尝试显示该列时,我收到消息:

  

“ <范围0的表>。”

第一次尝试:

Patient$DATE_OF_BIRTH <- as.Date(Patient$DATE_OF_BIRTH, format = "%d/%m/%Y %H:%M")

第二次尝试:

Patient$DATE_OF_BIRTH <- as.Date(Patient$DATE_OF_BIRTH, format = "%d/%m/%Y")

第三次尝试:

Patient$DATE_OF_BIRTH <- as.Date(Patient$DATE_OF_BIRTH, format = "%d-%m-%Y %H:%M")

第四次尝试:

Patient$DATE_OF_BIRTH <- as.Date(Patient$DATE_OF_BIRTH, format = "%d-%m-%Y")

不幸的是,在先前的尝试中,我得到的输出是:

  

“ <范围0的表>”

我希望输出:

将于09年12月8日至2009年12月8日或2009年8月12日以及

62年8月8日的输出为1962年12月8日或1962年8月12日或

保持相同的格式,即09年12月8日和62年12月8日,但列类型为日期而不是因子。

如果您建议不使用R软件包进行转换,我将非常感激,因为我在难以安装软件包的环境中工作。但是,如果没有办法,请提出任何可行的建议。

2 个答案:

答案 0 :(得分:0)

lubridate的{​​{1}}库可能会有所帮助,特别是tidyverse函数(将日-月-年字符串转换为日期):

dmy()

答案 1 :(得分:0)

这对我有用,但是请记住,这是特定于语言环境的。如果此方法对您不起作用,则可能需要更改转换的语言环境。

> as.Date("8-Dec-09", format = "%d-%b-%y")
[1] "2009-12-08"

如果您查看文档(?strptime),则会注意到有关%y的信息:

  

无世纪的年份(00-99)。输入时,将值00到68加上前缀   20和69至19的99 –这是2004年规定的行为   和2008 POSIX标准,但他们也说‘   从两位数年份推断的默认世纪的未来版本将   更改”。