我需要您的帮助: 我在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软件包进行转换,我将非常感激,因为我在难以安装软件包的环境中工作。但是,如果没有办法,请提出任何可行的建议。
答案 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标准,但他们也说‘ 从两位数年份推断的默认世纪的未来版本将 更改”。