我有日志文件,其中以序数日期格式提及日期。
wikipedia page for ordinal date
即14273意味着2014年第273天,因此14273年是2014年9月30日。
R中有一个函数将序数日期(14273)转换为(2014年9月30日)。
尝试了日期包,但没有遇到过这样做的功能。
答案 0 :(得分:3)
尝试使用指定格式的as.Date
:
as.Date(sprintf("%05d", 14273), format = "%y%j")
## [1] "2014-09-30"
备注强>
有关详细信息,请参阅?strptime
[link]
273
部分有时被称为一年中的某一天(相对于该月的某一天)或相对于年初的日期编号或朱利安日。< / p>
如果输入是yyjjj
形式的字符串(而不是数字),那么as.Date(x, format = "%y%j")
就可以了。
更新已更新,还可根据评论处理一位数的年份。
答案 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"