Как отсортировать годовые данные? - PullRequest
0 голосов
/ 09 марта 2019

У меня есть годовые данные с "-" за соответствующий месяц. Например: 2010-1 = январь 2010 года.

Когда я сортирую свои данные, я получаю следующий результат:

2010 - 1

2010 - 11

2010 - 12

2010 - 2

Однако я хочу следующий порядок:

2010 - 1

2010 - 2

...

2010 - 11

2010 - 12

Ответы [ 2 ]

0 голосов
/ 09 марта 2019

Вы также можете попробовать:

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]
0 голосов
/ 09 марта 2019

Используйте класс yearmon в зоопарке. Он внутренне представляет год / месяц как год + (месяц - 1) / 12, так что он сортируется правильно и внешне отображает его, как показано.

library(zoo)
x <- c("2010 - 1", "2010 - 11", "2010 - 12", "2010 - 2")

ym <- as.yearmon(x, "%Y - %m")
sort(ym)

дает:

"Jan 2010" "Feb 2010" "Nov 2010" "Dec 2010"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...