Future-proofing is an important concept when designing automated reports. One thing that can get out of hand over time is when you accumulate so many periods of data that your charts start to look overcrowded. You can solve for this by limiting the number of periods to, say, 13 (I like 13 for monthly data, because you get a full year of data, plus you can compare the month-over-month of the most recent data).
You could approach this by limiting your data to anything in the last 390 days (30 days x 13 months), but your starting period will likely be cut-off. You can fix this by finding the first day of the month for each record, then going back to get a full 13 months of data.
Here’s a quick one-liner to get the first day of the month for a given date: subtract the day of the month from the full date, then add 1.
# get some dates for the toy example:
df1 <- data.frame(YourDate=as.Date(“2012-01-01”)+seq(from=1,to=900,by=11))
df1$DayOne <- df1$YourDate – as.POSIXlt(df1$YourDate)$mday + 1