Получение первого и последнего числа каждого месяца в R - PullRequest
1 голос
/ 26 мая 2020

Мне нужно получить строку первого и последнего дня каждого месяца во фрейме больших данных, где мне нужно применить операции, которые точно охватывают каждый месяц, используя для l oop. К сожалению, фрейм данных не очень однороден. Вот воспроизводимый пример для работы:

dataframe <- data.frame(Date=c(seq.Date(as.Date("2020-01-01"),as.Date("2020-01-31"),by="day"),
    seq.Date(as.Date("2020-02-01"),as.Date("2020-02-28"),by="day"),seq.Date(as.Date("2020-03-02"),
    as.Date("2020-03-31"),by="day")))

1 Ответ

1 голос
/ 26 мая 2020

Мы можем создать группирующий столбец, преобразовав его в годмон, а затем получить первый и последний

library(zoo)
library(dplyr)
dataframe %>% 
   group_by(yearMon = as.yearmon(Date)) %>%
   summarise(FirstDay = first(Date), LastDay = last(Date))
# A tibble: 3 x 3
#  yearMon   First      Last      
#* <yearmon> <date>     <date>    
#1 Jan 2020  2020-01-01 2020-01-31
#2 Feb 2020  2020-02-01 2020-02-28
#3 Mar 2020  2020-03-02 2020-03-31

Если это первый и последний день, независимо от данных

library(lubridate)
dataframe %>% 
   group_by(yearMon = as.yearmon(Date)) %>%
   summarise(First = floor_date(first(Date), 'month'), 
             Last = ceiling_date(last(Date), 'month')-1)
...