Complementando a resposta anterior:

data <- data.frame(x=c("1958Q3", "2001Q1", "1989M7", "1948M12", "1949", "2011"),
                   y=runif(6,0,1))

data
(ano  <- data[grep("[0-9]{4}$", data$x),])
(quad <- data[grep("[0-9].*Q", data$x),])
(mes  <- data[grep("[0-9].*M", data$x),])

Éder Comunello <comunello.eder@gmail.com>
Dourados, MS - [22 16.5'S, 54 49'W]