2017-02-21 2 views
0

Я пытаюсь создать новую переменную в моей таблице данных на основе столбца даты, используя приведенное ниже правило.Как обнаружить последние n-ые рабочие дни месяца, используя 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

Смежные вопросы