Consider by
to slice your data by factor(s). Even paste
ID into plot's main title:
# SET UP PLOTS BY 2 ROWS AND 2 COLUMNS
par(mfrow=c(2, 2))
# RUN GROUPING ITERATION
output <- by(raw_df1, raw_df1$ID, function(sub) {
sub_zoo <-zoo(sub$`N`, order.by = sub$date)
plot(raw_df1_zoo, xlab = "Date", ylab = "N",
main = paste(sub$ID[[1]], "of N Series"))
})
To demonstrate with random, seeded data:
set.seed(552020)
raw_df1 <- data.frame(
group = sort(rep(c("sas", "stata", "spss", "python", "r", "julia"), 90)),
date = rep(seq.Date(Sys.Date() - 89, Sys.Date(), by="day"), 6),
N = rnorm(540)
)
par(mfrow=c(2, 3))
output <- by(raw_df1, raw_df1$group, function(sub) {
sub_zoo <- zoo(sub$`N`, order.by = sub$date)
plot(raw_df1_zoo, xlab = "Date", ylab = "N",
main = paste0(sub$group[[1]], " of N Series"))
})
