gpt4 book ai didi

r - 用闰年计算一年中的天数

转载 作者:行者123 更新时间:2023-12-01 19:18:21 28 4
gpt4 key购买 nike

我目前正在尝试在 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"))

最佳答案

一种选择是使用此函数:

How to account for leap years?

leap_year <- function(year) {
return(ifelse((year %%4 == 0 & year %%100 != 0) | year %%400 == 0, TRUE, FALSE))
}

然后编写一些代码,根据您的规则(例如在闰年中)操作您所拥有的日期

 if(leap_year(mydate)== TRUE & day_num>60) {
day_num + 1} else{
day_num}

关于r - 用闰年计算一年中的天数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54946395/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com