如何使用R转换序数日期日 - 月 - 年格式

时间:2015-02-16 12:12:19

标签: r date

我有日志文件,其中以序数日期格式提及日期。

wikipedia page for ordinal date

即14273意味着2014年第273天,因此14273年是2014年9月30日。

R中有一个函数将序数日期(14273)转换为(2014年9月30日)。

尝试了日期包,但没有遇到过这样做的功能。

3 个答案:

答案 0 :(得分:3)

尝试使用指定格式的as.Date

as.Date(sprintf("%05d", 14273), format = "%y%j")
## [1] "2014-09-30"

备注

  1. 有关详细信息,请参阅?strptime [link]

  2. 273部分有时被称为一年中的某一天(相对于该月的某一天)或相对于年初的日期编号或朱利安日。< / p>

  3. 如果输入是yyjjj形式的字符串(而不是数字),那么as.Date(x, format = "%y%j")就可以了。

  4. 更新已更新,还可根据评论处理一位数的年份。

答案 1 :(得分:2)

数据示例

x<-as.character(c("14273", "09001", "07031", "01033"))

数据转换

x1<-substr(x, start=0, stop=2)
x2<-substr(x, start=3, stop=5)
x3<-format(strptime(x2, format="%j"), format="%m-%d")

date<-as.Date(paste(x3, x1, sep="-"), format="%m-%d-%y")

答案 2 :(得分:0)

您可以按如下方式使用lubridate包:

>library(lubridate)

# Create a template date object
>date <- as.POSIXlt("2009-02-10")

# Update the date using 
> update(date, year=2014, yday=273)
[1] "2014-09-30 JST"