Я бы использовал lubridate
для удобства чтения:
library(lubridate)
dates[month(dates) > 3 | (month(dates) == 3 & day(dates) >= 15)]
Базовая версия той же логики:
dates[as.integer(format(dates, "%m")) > 3 |
(as.integer(format(dates, "%m")) == 3 & as.integer(format(dates, "%d")) >= 15)]