I have a long term sightings data set of identified individuals (~16,000 records from 1979- 2019) and I would like to subset the same date range (YYYY-09-01 to YYYY(+1)-08-31) across years in R. I have successfully done so for each "year" (and obtained the unique IDs) using:
library(dplyr)
library(lubridate)
year79 <-data%>%
  select(ID, Sex, AgeClass, Age, Date, Month, Year)%>%
  filter(Date>= as.Date("1978-09-01") & Date<= as.Date("1979-08-31")) %>%
  filter(!duplicated(ID))
year80 <-data%>%
  select(ID, Sex, AgeClass, Age, Date, Month, Year)%>%
  filter(Date>= as.Date("1979-09-01") & Date<= as.Date("1980-08-31")) %>%
  filter(!duplicated(ID))
I would like to clean up the code and ideally not need to specify the each range (just have it iterate through). I am new at R and stuck how to do this. Any suggestions?
FYI "Month" and "Year" are included for producing a table via melt and cast later on.
example data:
    ID Year   Month Day  Date       AgeClass Age Sex
1 1034 1979     4  17 1979-04-17        U   3   F
2 1127 1979     5   3 1979-05-03        A  13   F
3 1222 1979     5   3 1979-05-03        U   0   F
4 1303 1979     6  16 1979-06-16        U   0   F
5 1153 1980     4  16 1980-04-16        C   0   F
6 1014 1980     4  16 1980-04-16        U   6   F
                  ID Year   Month Day  Date       AgeClass Age  Sex
16428           2503 2019     5   8 2019-05-08        U  NA    F
16429           3760 2019     5   8 2019-05-08        A  12    F
16430           4080 2019     5   9 2019-05-09        A   9    F
16431           4095 2019     5   9 2019-05-09        A   9    U
16432           1204 2019     5  11 2019-05-11        A  37    F
16433           1204 2019     5  11 2019-05-11        A  NA    F
#> sessionInfo()
R version 3.5.1 (2018-07-02)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows >= 8 x64 (build 9200)
 
    