Я бы подумал сделать это по частям, т. Е.
require(tidyverse)
df <- data.frame(date = c("5-Aug-16", "6-Aug-16", "2-Jan-16"),
variation_id = "A")
df %>%
mutate(fmtdate = lubridate::month(lubridate::dmy(date)),
q = cut(fmtdate, breaks = c(-1, 3, 6, 9, 12), labels = c("Q1", "Q2", "Q3", "Q4")),
Quarter = str_c(lubridate::year(lubridate::dmy(date)), " ", q)) %>%
select(date, variation_id, Quarter)
# date variation_id Quarter
# 1 5-Aug-16 A 2016 Q3
# 2 6-Aug-16 A 2016 Q3
# 3 2-Jan-16 A 2016 Q1
Может быть, кто-то может помочь вам найти более элегантное решение, чем это, но это лучшее, что я могу сделать на данный момент!