首页 > 解决方案 > R中每月的第二个到最后一个星期三

问题描述

在 R 中,如何生成指定日期范围内所有第二个到最后一个星期三的日期列表?我尝试了一些事情,但在五个星期三的几个月里得到了不一致的结果。

标签: rdatecalendar

解决方案


要生成规则的日期序列,您可以将seq日期用于参数fromto。有关更多选项,请参阅seq.Date 文档

创建一个包含日期、月份和工作日的数据框。然后在 的帮助下获取每个月的倒数第二个星期三aggregate

day_sequence = seq(as.Date("2020/1/1"), as.Date("2020/12/31"), "day")

df = data.frame(day = day_sequence, 
                month = months(day_sequence), 
                weekday = weekdays(day_sequence))

#Filter only wednesdays
df = df[df$weekday == "Wednesday",]

result = aggregate(day ~ month, df, function(x){head(tail(x,2),1)})

tail(x,2)将返回最后两行,然后head(.., 1)会给你最后两行中的第一行。

结果:

       month        day
1      April 2020-04-22
2     August 2020-08-19
3   December 2020-12-23
4   February 2020-02-19
5    January 2020-01-22
6       July 2020-07-22
7       June 2020-06-17
8      March 2020-03-18
9        May 2020-05-20
10  November 2020-11-18
11   October 2020-10-21
12 September 2020-09-23

推荐阅读