Создавать первый и последний юлианский день каждого месяца

Я хочу создать вектор начала и окончания каждого месяца для невисокосного года (365 дней) в юлианских днях.

Что-то вроде

start.month <- c(1, 32, 60, .....)
end.month <- c(31, 59, 90, .....)

Как мне это сделать в R?

Я могу генерировать только месяцы года, используя это:

seq(as.Date("2001/1/1"), by = "month", length.out = 12)

Но как мне найти первый и последний юлианский день каждого года?


person 89_Simple    schedule 02.02.2018    source источник
comment
Назовите свою последовательность дат первого числа каждого месяца starts. Затем определите ends = starts - 1. Тогда юлианские дни равны format(c(starts, ends), "%j"). Используйте 2002 для последовательности, чтобы предыдущий год не был високосным.   -  person Gregor Thomas    schedule 02.02.2018


Ответы (2)


Назовите свою последовательность дат первого числа каждого месяца starts. Затем определите ends = starts - 1. Тогда юлианские дни равны format(c(starts, ends), "%j"). Используйте 2002 для последовательности, чтобы предыдущий год не был високосным.

    starts = seq(as.Date("2002/1/1"), by = "month", length.out = 12)
    ends = starts - 1
    x = as.numeric(format(c(starts, ends), "%j"))
    sort(x)
    #  [1]   1  31  32  59  60  90  91 120 121 151 152 181 182 212 213 243 244 273 274 304 305
    # [22] 334 335 365
person Gregor Thomas    schedule 02.02.2018

Я бы использовал лубридат

library(lubridate)
dates <- seq(as.Date("2001/1/1"), by = "month", length.out = 12)
end_dates <- dates
day(end_dates) <- days_in_month(end_dates)

start_month <- yday(dates)
end_month <- yday(end_dates)

start_month
[1]   1  32  60  91 121 152 182 213 244 274 305 335
end_month
[1]  31  59  90 120 151 181 212 243 273 304 334 365

или если вы знаете, что это не високосный год, вы можете использовать

end_month <- c(1 + start_month[-1], 365)
person Russ Hyde    schedule 02.02.2018