如何使用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"
备注
有关详细信息,请参阅 ?strptime
[link]
273
部分有时被称为一年中的第几天(相对于每月的第几天)或日期编号或相对于开始的儒略日年份.
如果输入是 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")
我有日志文件,其中日期以序号日期格式提及。
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"
备注
有关详细信息,请参阅
?strptime
[link]273
部分有时被称为一年中的第几天(相对于每月的第几天)或日期编号或相对于开始的儒略日年份.如果输入是
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")