将没有年份的日期转换为儒略日(自年初以来的天数)
Convert date without year into Julian day (number of days since start of the year)
我有一些日期需要转换为儒略日。这是我的数据
date <- c("21-Jul", "14-Jul", "08-Jul", "08-Jul","16-Jul")
class(date)
[1] "character"
我想将 date
转换为儒略日。所以对于上述日期,儒略日将是:
date
202,195,189,189,197
我发现了一个函数 as.POSIXlt
可以将日期转换为儒略日。例如
tmp <- as.POSIXlt("16Jun10", format = "%d%b%y")
tmp$yday
# [1] 166
但这需要按特定顺序排列的日期,包括我没有的年份。有什么方法可以将我的日期转换为 Julian 吗?
还有,今年不是闰年。
儒略日表示一年中的第几天,因此 1 月 1 日是 1,1 月 2 日是 2,依此类推....
base R 有一个函数 julian
可以与 paste0
和 as.Date
.
一起产生你正在寻找的东西
julian(as.Date(paste0("1970-", date), format="%Y-%d-%b"))
[1] 201 194 188 188 196
attr(,"origin")
[1] "1970-01-01"
请注意,这是从 1970 年 1 月 1 日开始计算的天数(从 0 开始),因此您可以加 1 以获得所需的结果。
julian(as.Date(paste0("1970-", date), format="%Y-%d-%b")) + 1
[1] 202 195 189 189 197
我手动检查过1970年不是闰年:
seq(as.Date("1970-02-25"), as.Date("1970-03-02"), by="day")
[1] "1970-02-25" "1970-02-26" "1970-02-27" "1970-02-28" "1970-03-01" "1970-03-02"
为了将来参考,也可以自己设置起点,使用 origin 参数 as.Date
:
julian(as.Date(paste0("1980-", date), format="%Y-%d-%b"), origin=as.Date("1980-01-01"))
[1] 202 195 189 189 197
attr(,"origin")
[1] "1980-01-01"
应该清楚的是,可以将原点设置为您希望的任何日期,这样就可以用它来计算任何日期之后(或之前)的天数。
我有一些日期需要转换为儒略日。这是我的数据
date <- c("21-Jul", "14-Jul", "08-Jul", "08-Jul","16-Jul")
class(date)
[1] "character"
我想将 date
转换为儒略日。所以对于上述日期,儒略日将是:
date
202,195,189,189,197
我发现了一个函数 as.POSIXlt
可以将日期转换为儒略日。例如
tmp <- as.POSIXlt("16Jun10", format = "%d%b%y")
tmp$yday
# [1] 166
但这需要按特定顺序排列的日期,包括我没有的年份。有什么方法可以将我的日期转换为 Julian 吗?
还有,今年不是闰年。
儒略日表示一年中的第几天,因此 1 月 1 日是 1,1 月 2 日是 2,依此类推....
base R 有一个函数 julian
可以与 paste0
和 as.Date
.
julian(as.Date(paste0("1970-", date), format="%Y-%d-%b"))
[1] 201 194 188 188 196
attr(,"origin")
[1] "1970-01-01"
请注意,这是从 1970 年 1 月 1 日开始计算的天数(从 0 开始),因此您可以加 1 以获得所需的结果。
julian(as.Date(paste0("1970-", date), format="%Y-%d-%b")) + 1
[1] 202 195 189 189 197
我手动检查过1970年不是闰年:
seq(as.Date("1970-02-25"), as.Date("1970-03-02"), by="day")
[1] "1970-02-25" "1970-02-26" "1970-02-27" "1970-02-28" "1970-03-01" "1970-03-02"
为了将来参考,也可以自己设置起点,使用 origin 参数 as.Date
:
julian(as.Date(paste0("1980-", date), format="%Y-%d-%b"), origin=as.Date("1980-01-01"))
[1] 202 195 189 189 197
attr(,"origin")
[1] "1980-01-01"
应该清楚的是,可以将原点设置为您希望的任何日期,这样就可以用它来计算任何日期之后(或之前)的天数。