我不知道如何將Sys.Date()轉換爲格式爲YYYYDDD的數字。其中DDD是一年中的一天,即1月1日將是2016001 12月31日將是2016365如何將日期轉換爲YYYYDDD?
Date <- Sys.Date() ## The Variable Date is created as 2016-01-01
SomeFunction(Date) ## Returns 2016001
我不知道如何將Sys.Date()轉換爲格式爲YYYYDDD的數字。其中DDD是一年中的一天,即1月1日將是2016001 12月31日將是2016365如何將日期轉換爲YYYYDDD?
Date <- Sys.Date() ## The Variable Date is created as 2016-01-01
SomeFunction(Date) ## Returns 2016001
您可以只使用format
功能如下:
format(Date, '%Y%j')
這給:
[1] "2016161" "2016162" "2016163"
如果你想它格式化其他方式,請參閱?strptime
所有可能的選項。
或者,你可以使用從data.table
或lubridate
包year
和yday
功能,並將其與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"
這應該創建與指定的日期格式的新列工作:
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"
希望這會有所幫助。如果你只想要一個值而不用數據集,可能需要修改。
@mtoto如果只是尋找特定的價值,那麼它有一個很好的,簡單的答案。 –
這裏有一個選項與lubridate
:
library(lubridate)
x <- Sys.Date()
#[1] "2016-06-08"
paste0(year(x),yday(x))
#[1] "2016160"
@卡佳處理程序 基本上所有其他格式(日期)的功能,並沒有意識到% j存在。 如果有其他人存在,我想知道,正在參考本網站: [鏈接](http://www.statmethods.net/input/dates.html) – LanceS
[''格式' as.Date'](https://stat.ethz.ch/R-manual/R-devel/library/base/html/as.Date.html)鏈接到['strptime']的相關文檔(https: //stat.ethz.ch/R-manual/R-devel/library/base/html/strptime.html),其中列出了所有日期 - 時間轉換規範。 – RHertel