Вы также можете попробовать:
df <- transform(df, Dates = format(as.Date(paste0(Dates, "-01"), "%Y-%m-%d"), "%Y-%m"))
df <- df[order(df$Dates), , drop = FALSE]
.. где Dates
будет именем вашего столбца, вы можете заменить его на свой фактический столбец.
Вывод:
Dates
1 2010-01
4 2010-02
2 2010-11
3 2010-12
Используемые данные:
df <- structure(list(Dates = structure(1:4, .Label = c("2010-1", "2010-11",
"2010-12", "2010-2"), class = "factor")), class = "data.frame", row.names = c(NA,
-4L))
PS Если ваши данные имеют фактические пробелы в формате (например, 2010 - 1
), вы можете сделать:
df <- transform(df, Dates = format(as.Date(paste0(Dates, " - 01"), "%Y - %m - %d"), "%Y-%m"))
df <- df[order(df$Dates), , drop = FALSE]