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

How to convert ordinal date day-month-year format using R

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

wikipedia page for ordinal date

即 14273 表示 2014 年的第 273 天,因此 14273 是 2014 年 9 月 30 日。

R 中是否有将序号日期 (14273) 转换为 (30-Sep-2014) 的函数。

尝试了 date 包,但没有找到可以执行此操作的函数。

您可以按如下方式使用 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"

尝试使用指定格式 as.Date

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

备注

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

  2. 273 部分有时被称为一年中的第几天(相对于每月的第几天)或日期编号或相对于开始的儒略日年份.

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

更新 已更新以根据评论处理一位数字的年份。

数据示例

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")