У меня есть данные, которые я хочу агрегировать на основе диапазона данных.
have=data.frame('foo' = c(123,123,234534,2541,23,2541,2541,234534,234534),bar=as.Date(c('2020-01-13','2019-12-13','2020-02-14','2020-01-10','2020-01-03','2019-12-18','2019-11-06','2019-11-14','2019-10-20')))
foo bar
1 123 2020-01-13
2 123 2019-12-13
3 234534 2020-02-14
4 2541 2020-01-10
5 23 2020-01-03
6 2541 2019-12-18
7 2541 2019-11-06
8 234534 2019-11-14
9 234534 2019-10-20
Я хочу сосчитать столбец foo на основе интервала, который является максимальным для различных значений foo и месяц назад.
want=data.frame('foo' = c(123,234534,2541,23,2541,234534),bar=as.Date(c('2020-01-13','2020-02-14','2020-01-10','2020-01-03','2019-11-06','2019-11-14')),'count'=c(2,1,2,1,1,2))
foo bar count
1 123 2020-01-13 2
2 234534 2020-02-14 1
3 2541 2020-01-10 2
4 23 2020-01-03 1
5 2541 2019-11-06 1
6 234534 2019-11-14 2
Я использую следующий код, но не знаю, как использовать диапазон в функции sumrize ().
have %>%
mutate(bar= as.Date(bar)) %>%
group_by(foo) %>%
summarise(min_date=(max(bar) %m-% months(1)),max_date=max(bar),count = n())
Вывод следующий, где 234534 считается как 3 вместо 1, а затем как 2, как видно на кадре данных want .
foo min_date max_date count
<dbl> <date> <date> <int>
1 23 2019-12-03 2020-01-03 1
2 123 2019-12-13 2020-01-13 2
3 2541 2019-12-10 2020-01-10 3
4 234534 2020-01-14 2020-02-14 3