【发布时间】:2023-03-10 05:55:01
【问题描述】:
我目前正在尝试在 R 中对此进行编码。我想采用 %Y-%m-%d(例如:2017-12-31)格式的日期并将其转换为一年中的某一天。但是,我希望它始终将 02/28 视为第 59 天,将 03/01 视为第 61 天。当它不是闰年时,它会跳过#60。这样,01/01 始终是#1,12/31 始终是#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"))
【问题讨论】:
标签: r date lubridate strftime leap-year