2016-09-06 2 views
-1

У меня есть последовательность дат и каждая дата имеет значениеПолучить последний день в квартале

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)) 

Я хотел бы подмножество в dataframe и вернуться в последний день в квартале со значением

Так что даты выше результаты должны быть

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

Какова ваша контрольная дата? '2015-01-01'? Посмотрите на [это] (http://rpackages.ianhowson.com/cran/lubridate/man/quarter.html) – Christoph

+0

https://www.google.com/?client=ubuntu#channel=fs&q=site% 3Astackoverflow.com + [r] + last + day + of + quarter –

ответ

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 
+0

Я получаю эту ошибку Ошибка в max (date): недопустимый «тип» (замыкание) аргумента при запуске кода – user3022875

+0

Я думаю, что%>% group_by (Квартал = квартал (дата, Т))%>% подведение итогов (m = max (дата)) будет работать – user3022875

+0

У вас возникла ошибка при использовании ваших данных образца? – lukeA

Смежные вопросы