Один из лучших способов сделать это, о котором я недавно узнал, - использовать пакет lubridate
:
library(lubridate)
datset <- data.frame(date = as.Date("2011-06-28")+c(1:100))
#Add 1, since floor_date appears to round down to Sundays
floor_date(datset$date,"week") + 1
Я не уверен в том, как делать двухнедельную сортировку, но ежемесячно и ежеквартально легко справляться с соответствующими base
функциями:
quarters(datset$date)
months(datset$date)
РЕДАКТИРОВАТЬ: Интересно, что floor_date
с lubridate
не может округляться до ближайшего квартала, но функция с тем же именем в ggplot2
делает.