В настоящее время я пытаюсь закодировать это в R. Я хотел бы взять дату, которая у меня есть в формате %Y-%m-%d
(например, 2017-12-31), и преобразовать ее в день года. Однако я бы хотел, чтобы 28 февраля всегда считались днем № 59, а 01 марта - днем № 61. Когда это не високосный год, он просто пропускает №60. Таким образом, 01.01 всегда # 1, а 31.12 всегда # 366.
Я уже пробовал использовать strftime()
и yday()
, но оба они не пропускают 60-й день в високосный год. 31 декабря будет день № 365 или № 366, в зависимости от того, високосный год это или нет.
Если у кого-нибудь есть представление о том, как я могу написать это на R, это было бы здорово! Большое спасибо.
file <- read.table("PATHTOMYFILE", fill = TRUE, header = TRUE)
file <- file[-c(1), ]
file$datetime <- as.Date(as.character(file$datetime))
file <- file[which(file$datetime <= as.Date("2017-09-30")), ]
file$x <- file[, 4]
file$x <- as.numeric(as.character(file$x))
# Year-day function
yearday <- function(d){
# Count previous months
yd <- ifelse(lubridate::month(d) > 1, sum(lubridate::days_in_month(1:
(lubridate::month(d)-1))), 0)
# Add days so far in month & extra day if after February
yd <- yd + lubridate::day(d) + ifelse(lubridate::month(d)>2, 1, 0)
yd
}
file$Day <- yearday(as.Date((file$datetime), format = "%Y-%m-%d"))