Я сейчас пытаюсь закодировать это в R. Я хотел бы взять мою дату в формате %Y-%m-%d
(ex: 2017-12-31) и преобразовать ее в день года.Тем не менее, я бы хотел, чтобы 28.02 считалось днем № 59, а 03.01 - днем 61.Когда это не високосный год, он просто пропустит # 60.Таким образом, 01.01 всегда № 1, а 31.12 всегда № 366.
Я уже пробовал использовать strftime()
и yday()
, но оба они не пропускают день №60, когда это високосный год.Это просто сделает 12/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"))