在R中将数字格式转换为YYYY日期

3

我有一个从CSV文件导入的数据集,其中“年份”列从2001年开始一直持续到2013年。

然而,该列的类别是“整数”。

> class(Year)
[1] "integer"

我看了很多关于如何进行这种更改的解决方案和帖子,但是这些解决方案似乎都是针对某个版本的 YYYY-mm-dd/dd-mm-yyy/mm-dd-yyyy 或者将像 20150521 这样的东西转换为日期。

这些是我到目前为止尝试过但没有成功的一些命令。

Year <- as.Date(Year, "%Y")
Error in charToDate(x) : 
  character string is not in a standard unambiguous format

as.Date(Year)
Error in as.Date.numeric(Year) : 'origin' must be supplied

as.Date(Year, Year[1])
Error in as.Date.numeric(origin, ...) : 'origin' must be supplied

as.Date(Year, "2001")
Error in charToDate(x) : 
  character string is not in a standard unambiguous format

as.Date(Year, 2001)
Error in as.Date.numeric(origin, ...) : 'origin' must be supplied

如何将仅包含YYYY格式的列转换为日期?


1
你离成功很近了 -- strptime(as.character(y), "%Y") - undefined
1
一个单独的"year"在R中不是一个Date对象。它至少需要有天的粒度。所以你需要将任何4位数的有效年份整数转换为####-##-##,才能使其成为一个Date对象。 - undefined
感谢您的回复。 我的数据集显示年度趋势,因此在月份或日期方面没有细分。 - undefined
1个回答

5

没有办法创建一个不包含日期和月份的日期对象。

即使你写:

strptime(as.character(y), "%Y")

这包括一天和一个月:
strptime(as.character(1999), "%Y")
[1] "1999-10-07 EEST"

作为一种解决方法,您可以尝试保留年份或包括每年的第一天,并在需要时提取年份,例如:

base-r:

date <- strptime("2012", "%Y")
format(date, "%Y")
[1] "2012"
as.numeric(format(date, "%Y"))
[1] 2012

lubridate:

require(lubridate)
year(date)
[1] 2012

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接