Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.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中将数字格式转换为YYYY日期_R_Date_Lubridate - Fatal编程技术网

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

在R中将数字格式转换为YYYY日期,r,date,lubridate,R,Date,Lubridate,我有一个从CSV文件导入的数据集,其中年份列从2001年开始,一直持续到2013年 但是,列类是“整数” > class(Year) [1] "integer" 我已经看过了关于如何进行此更改的各种解决方案和帖子,但这些解决方案似乎适用于YYYY-mm-dd/dd-mm-yyy/mm-dd-YYYY的某些版本,或者将类似20150521的内容转换为日期 这些是我到目前为止尝试过的一些命令,但运气不佳 Year <- as.Date(Year, "%Y") Error in char

我有一个从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格式的列转换为日期?

如果不包含日期和月份,则无法创建日期对象。 即使你写:

strptime(as.character(y), "%Y")
这包括一天和一个月:

strptime(as.character(1999), "%Y")
[1] "1999-10-07 EEST"
作为一种解决方法,您可以尝试保持年份不变或包括每年的第一天,并随时提取年份,如下所示:

base-r:
非常接近-strTimeas.charactery,%Ya year本身不是R中的日期对象。它至少需要一天的粒度。因此,您需要将任何4位有效的年份整数转换为-以使其成为日期对象。感谢您的回复。我的数据集显示年度趋势,因此没有月或日的粒度。
date <- strptime("2012", "%Y")
format(date, "%Y")
[1] "2012"
as.numeric(format(date, "%Y"))
[1] 2012
require(lubridate)
year(date)
[1] 2012