2017-02-21 66 views
0

如何检测一个月的最后第n个工作日我试图通过使用下面的规则基于日期列在我的data.table中创建一个新变量。如何使用R

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

以下是我需要查看结果的一个示例。第三栏包含编码说明。

enter image description here

提前感谢!

+0

本帖](http://stackoverflow.com/questions/37683981/how-to-flag-last-friday-or-last-day-or-month? rq = 1)和[这篇文章](http://stackoverflow.com/questions/33088424/r-find-last-weekday-of-month?rq=1)是相当不错的开始''weekdays'函数。 – lmo

回答

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') 
+0

是的,它的工作原理!感谢您的快速回复! – kzmlbyrk