获得季度的最后一天

时间:2016-09-06 18:49:18

标签: r

我有一系列日期,每个日期都有一个值

dat = data.frame(date = seq(as.Date("2015/1/1"), as.Date("2016/8/1"), "days"), value =seq(1, length(seq(as.Date("2015/1/1"), as.Date("2016/8/1"), "days")),1 ))

我希望对数据框进行分组,并返回该季度的最后一天,并带有值

因此,对于上述日期,结果应为

2015-03-31    90
2015-06-30   181
2015-09-30   273
2015-12-31   365
2016-03-31   456
2016-06-30   547
2016-08-01   579

1 个答案:

答案 0 :(得分:1)

这只是一种方式

library(dplyr)
library(lubridate)
dat %>% 
  group_by(quarter=quarter(date, T)) %>% 
  filter(date==max(date)) %>% 
  ungroup %>% 
  select(-quarter)
# # A tibble: 7 x 2
#         date value
#       <date> <dbl>
# 1 2015-03-31    90
# 2 2015-06-30   181
# 3 2015-09-30   273
# 4 2015-12-31   365
# 5 2016-03-31   456
# 6 2016-06-30   547
# 7 2016-08-01   579