r - 确定一周中的某一天是否是 R 中每月的第 2/3 等星期一/星期二/等

给定一个日期和它是星期几,我想知道是否有代码可以告诉我它是一个月中的哪几天。例如在下图中,给定 2/12/2020 和“星期三”,我想得到输出“2”,因为它是该月的第二个星期三。

最佳答案

您基本上可以在 base R 中通过一次操作来做到这一点。您也不需要第二个输入列。

这是较慢的演练:

代码

dates <- c("2/12/2020","2/11/2020","2/10/2020","2/7/2020","2/6/2020", "2/5/2020")
Dates <- anytime::anydate(dates)   ## one of several parsers
dow   <- weekdays(Dates)           ## for illustration, base R function
cnt   <- (as.integer(format(Dates, "%d")) - 1) %/% 7 + 1

res <- data.frame(dt=Dates, dow=dow, cnt=cnt)
res

(最终)输出

R> res
          dt       dow cnt
1 2020-02-12 Wednesday   2
2 2020-02-11   Tuesday   2
3 2020-02-10    Monday   2
4 2020-02-07    Friday   1
5 2020-02-06  Thursday   1
6 2020-02-05 Wednesday   1
R> 

像这样的功能通常在专用的日期/时间库中。我将 (C++) Boost date_time 库中的一些代码包装在 RcppBDH 包中——这样可以轻松找到“每个季度最后一个月的第三个星期三”等。

https://stackoverflow.com/questions/60211831/

相关文章:

sql - 我如何允许sql中的重复值?

powershell - Terraform azurerm_virtual_machine_ext

list - 得到 "Fatal error: Index out of range": show

python - 如何在python中创建文件夹?

javascript - 如何模拟 axios.create([config]) 函数以返回其实例方

bash - 如何在 bash 中循环遍历 jq 唯一数组?

node.js - Firebase 函数错误 : The default Firebase app

ios - 从 XCode 的调试导航器中清除崩溃日志

typescript - typescript 中的 bool 列表是否有 "all"或 "any"

oracle - 在 Apex 中提交表单之前添加确认