在R中获取每个月的第一天和最后一天

问题描述 投票:0回答:1

我需要在一个大数据框中获取每个月的第一天和最后一天的行,我需要使用for循环应用每个月准确覆盖的操作。不幸的是,数据帧不是很均匀。这是一个可重现的示例,可用于:

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")))
r dataframe tidyverse lubridate
1个回答
0
投票

我们可以通过转换为yearmon来创建分组列,然后获得第一个和最后一个

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
© www.soinside.com 2019 - 2024. All rights reserved.