R 如何找到下一天?
我需要找到与一组日期对应的所有“下周五” 例如,2015-08-03(2015年8月3日,星期一)作为输入应返回2015-08-07(2015年8月7日,星期五)作为输出 在阅读时,我找不到一种方法来管理这种需求,您将如何继续R 如何找到下一天?,r,lubridate,R,Lubridate,我需要找到与一组日期对应的所有“下周五” 例如,2015-08-03(2015年8月3日,星期一)作为输入应返回2015-08-07(2015年8月7日,星期五)作为输出 在阅读时,我找不到一种方法来管理这种需求,您将如何继续 library(lubridate) date <- "2015-08-03" date <- wmd(date) wday(date, label = TRUE) 库(lubridate) 日期Lubridate提供了一个很好的功能持续时间。您可以使用此
library(lubridate)
date <- "2015-08-03"
date <- wmd(date)
wday(date, label = TRUE)
库(lubridate)
日期Lubridate提供了一个很好的功能持续时间。您可以使用此选项将天添加到当前日期
通常最好不要创建与函数同名的变量(即日期)
日期尝试此功能:
nextweekday <- function(date, wday) {
date <- as.Date(date)
diff <- wday - wday(date)
if( diff < 0 )
diff <- diff + 7
return(date + diff)
}
nextweekdaylibrary(lubridate)
下周五Thx基里尔
这太棒了!它为我节省了很多工作,你也可以用模和整数除法来做
例如,对于星期五,请检查以下内容:
library(lubridate)
next_friday <- function(dates) {
dates + days((5 - wday(dates) %% 6) + (wday(dates) %/% 6))
}
库(lubridate)
下周五日期
[1] "2020-06-28" "2020-03-22" "2020-07-15" "2020-01-16" "2020-08-01" "2020-05-16" "2020-10-20" "2020-11-03"
[9] "2020-08-25" "2020-10-07" "2020-04-18" "2020-12-11" "2020-05-20" "2020-08-09" "2020-01-10" "2020-05-21"
[17] "2020-10-24" "2020-03-06" "2020-05-19" "2020-09-08"
>下周五(日期)
[1] "2020-07-02" "2020-03-26" "2020-07-16" "2020-01-16" "2020-08-06" "2020-05-21" "2020-10-22" "2020-11-05"
[9] "2020-08-27" "2020-10-08" "2020-04-23" "2020-12-17" "2020-05-21" "2020-08-13" "2020-01-16" "2020-05-21"
[17] "2020-10-29" "2020-03-12" "2020-05-21" "2020-09-10"
>wday(下周五(日期))
[1] 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5
你读过了吗?
library(lubridate)
nextFriday <- function(date) {
date <- ymd(date)
.day <- wday(date, label = TRUE)
shift <- ifelse(as.numeric(.day) < 6, 0, 7)
date + days(6 - as.numeric(.day) + shift)
}
nextFriday("2015-08-03")
library(lubridate)
next_friday <- function(dates) {
dates + days((5 - wday(dates) %% 6) + (wday(dates) %/% 6))
}
> dates <- sample(seq(ymd('2020-01-01'),ymd('2021-01-01'), by='days'), 20)
> dates
[1] "2020-06-28" "2020-03-22" "2020-07-15" "2020-01-16" "2020-08-01" "2020-05-16" "2020-10-20" "2020-11-03"
[9] "2020-08-25" "2020-10-07" "2020-04-18" "2020-12-11" "2020-05-20" "2020-08-09" "2020-01-10" "2020-05-21"
[17] "2020-10-24" "2020-03-06" "2020-05-19" "2020-09-08"
> next_friday(dates)
[1] "2020-07-02" "2020-03-26" "2020-07-16" "2020-01-16" "2020-08-06" "2020-05-21" "2020-10-22" "2020-11-05"
[9] "2020-08-27" "2020-10-08" "2020-04-23" "2020-12-17" "2020-05-21" "2020-08-13" "2020-01-16" "2020-05-21"
[17] "2020-10-29" "2020-03-12" "2020-05-21" "2020-09-10"
> wday(next_friday(dates))
[1] 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5