我无法弄清楚如何将Sys.Date()转换为YYYYDDD格式的数字。如果DDD是一年中的日期,即1月1日将是2016001年12月31日将是2016365
{{1}}
答案 0 :(得分:6)
您可以按如下方式使用format
功能:
format(Date, '%Y%j')
给出:
[1] "2016161" "2016162" "2016163"
如果您想以其他方式对其进行格式化,请参阅?strptime
了解所有可能的选项。
或者,您可以使用year
或yday
个软件包中的data.table
和lubridate
函数,并将其与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"
希望这会有所帮助。如果您只想要一个值并且不使用数据集,则可能需要修补。