如何使用R检测一个月的最后n个工作日

时间:2017-02-21 21:01:55

标签: r

我正在尝试使用以下规则基于日期列在我的data.table中创建一个新变量。

规则:如果“日期”是一个月的最后3个工作日之一(可以是星期一到星期五的任何一天),则将其编码为“1”;否则将其编码为“0”。

以下是我需要查看结果的示例。第3栏包括编码说明。

enter image description here

提前致谢!

1 个答案:

答案 0 :(得分:1)

这是怎么回事:

library(dplyr)

df <- data.frame(date=seq(as.Date("2017/01/01"), as.Date("2017/12/31"), "days"))
df$day <- weekdays(x = df$date)
df$month <- months(x = df$date)

true_flags <- df %>% 
  arrange(date) %>% 
  filter(day!='Sunday' & day!='Saturday') %>% 
  group_by(month) %>% 
  top_n(wt = date,n = 3) %>% 
  ungroup() %>% 
  transmute(date=date,flag=T)

df %>% left_join(y=true_flags,by = 'date')