How to flag last friday or last day or month

前端 未结 4 628
慢半拍i
慢半拍i 2021-01-22 17:53

I have a data frame of dates and the day of the week

> head(data)
         day   weekday
1 2016-01-01    Friday
4 2016-01-04    Monday
5 2016-01-05   Tuesday
         


        
4条回答
  •  感动是毒
    2021-01-22 18:00

    library(lubridate)
    library(dplyr)
    data%>% 
      mutate(year = year(day),month= month(day)) %>%
      group_by(year, month) %>% 
      mutate(LastDayInMonth = max(day)==day)%>% 
      arrange(day) %>%
      ungroup() %>% 
      group_by(year, month, weekday) %>%
      mutate(LastWeekInMonth = row_number() ==  n(), 
             LastFriayInMonth = weekday =="Freitag" & LastWeekInMonth == 1) %>% 
      ungroup()%>%
      select(day, weekday, LastDayInMonth,LastFriayInMonth)
    

    Same excerpt as above (%>% filter(LastDayInMonth | LastFriayInMonth == TRUE):

    Source: local data frame [8 x 4]
    
             day    weekday LastDayInMonth LastFriayInMonth
          (date)     (fctr)          (lgl)            (lgl)
    1 2016-01-29    Freitag           TRUE             TRUE
    2 2016-02-26    Freitag          FALSE             TRUE
    3 2016-02-29     Montag           TRUE            FALSE
    4 2016-03-25    Freitag          FALSE             TRUE
    5 2016-03-31 Donnerstag           TRUE            FALSE
    6 2016-04-29    Freitag           TRUE             TRUE
    7 2016-05-06    Freitag          FALSE             TRUE
    8 2016-05-10   Dienstag           TRUE            FALSE
    

提交回复
热议问题