У меня есть данные, которые выглядят так:
sample <- data.frame(
group = c("A","A","A","B","B","B"),
date = c(as.Date("2014-12-31"),
as.Date("2015-01-31"),
as.Date("2015-02-28"),
as.Date("2015-01-31"),
as.Date("2015-03-31"),
as.Date("2015-04-30")),
obs = c(100, 200, 300, 50, 100, 150)
)
Обратите внимание, что переменная даты всегда принимает последнюю дату месяца. В табличном формате данные выглядят так:
group date obs
1 A 2014-12-31 100
2 A 2015-01-31 200
3 A 2015-02-28 300
4 B 2015-01-31 50
5 B 2015-03-31 100
6 B 2015-04-30 150
Я хочу создать четвертый столбец, который подсчитывает количество наблюдений в группе. ОДНАКО, я хочу, чтобы подсчет начался заново, если месяц не следует сразу за месяцем ранее. Вот как я хочу, чтобы это выглядело так:
group date obs num
1 A 2014-12-31 100 1
2 A 2015-01-31 200 2
3 A 2015-02-28 300 3
4 B 2015-01-31 50 1
5 B 2015-03-31 100 1
6 B 2015-04-30 150 2
Пока все, что я могу получить, это следующее:
library(tidyverse)
sample <- sample %>%
arrange(date) %>%
group_by(group) %>%
mutate(num = row_number())
group date obs num
1 A 2014-12-31 100 1
2 A 2015-01-31 200 2
3 A 2015-02-28 300 3
4 B 2015-01-31 50 1
5 B 2015-03-31 100 2
6 B 2015-04-30 150 3
Любая помощь будет принята с благодарностью. Я также хочу иметь возможность делать то же самое, но с квартальными данными (вместо месячных).