Следующий базовый код R выводит 3-ю пятницу необходимых месяцев. Названия выходных месяцев указаны в моем текущем языковом стандарте, но сам код не зависит от него.
friday3 <- function(start.year, end.year){
d <- seq(ISOdate(start.year - 1, 12, 1), ISOdate(end.year, 12, 1), by = "3 month")[-1]
d <- as.Date(d)
res <- lapply(d, function(x){
s <- seq(x, by = "day", length.out = 28)
i <- format(s, "%u") == "5"
s[i][3]
})
res <- Reduce(c, res)
data.frame(Month = format(d, "%Y-%B"), Day = res)
}
Мой языковой стандарт - не английский sh, поэтому мне нужно установить языковой стандарт Engli sh на протестируйте его, но сам код не зависит от локали.
#ol <- Sys.getlocale("LC_TIME")
#Sys.setlocale("LC_TIME", "en_US.UTF-8")
friday3(2018, 2020)
# Month Day
#1 2018-March 2018-03-16
#2 2018-June 2018-06-15
#3 2018-September 2018-09-21
#4 2018-December 2018-12-21
#5 2019-March 2019-03-15
#6 2019-June 2019-06-21
#7 2019-September 2019-09-20
#8 2019-December 2019-12-20
#9 2020-March 2020-03-20
#10 2020-June 2020-06-19
#11 2020-September 2020-09-18
#12 2020-December 2020-12-18
И вернемся к моему.
#Sys.setlocale("LC_TIME", ol)