我有一系列日期,每个日期都有一个值
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
答案 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