如何将日期转换为YYYYDDD?

时间:2016-06-08 17:41:41

标签: r date datetime

我无法弄清楚如何将Sys.Date()转换为YYYYDDD格式的数字。如果DDD是一年中的日期,即1月1日将是2016001年12月31日将是2016365

{{1}}

3 个答案:

答案 0 :(得分:6)

您可以按如下方式使用format功能:

format(Date, '%Y%j')

给出:

[1] "2016161" "2016162" "2016163"

如果您想以其他方式对其进行格式化,请参阅?strptime了解所有可能的选项。

或者,您可以使用yearyday个软件包中的data.tablelubridate函数,并将其与paste0粘贴在一起:

library(data.table) # or: library(lubridate)
paste0(year(Date), yday(Date))

会给你相同的结果。

两个选项返回的值都是类字符。在as.numeric()中包含上述解决方案以获得实数。

使用过的数据:

> Date <- Sys.Date() + 1:3
> Date
[1] "2016-06-09" "2016-06-10" "2016-06-11"
> class(Date)
[1] "Date"

答案 1 :(得分:3)

以下是lubridate的一个选项:

library(lubridate)
x <- Sys.Date()
#[1] "2016-06-08"
paste0(year(x),yday(x))
#[1] "2016160"

答案 2 :(得分:1)

这适用于创建具有指定日期格式的新列:

Date <- Sys.Date    
df$Month_Yr <- format(as.Date(df$Date), "%Y%d")

但是,尤其是在处理更大的数据集时,更容易执行以下操作:

library(data.table)
setDT(df)[,NewDate := format(as.Date(Date), "%Y%d"

希望这会有所帮助。如果您只想要一个值并且不使用数据集,则可能需要修补。