Сортировка месяцев в R - PullRequest
10 голосов
/ 19 марта 2012

Я хочу отсортировать названия месяцев.Когда я использую функцию strptime, она возвращает ошибку, поскольку значения атрибута содержат только названия месяцев.Когда я использую функцию sort, месяцы сортируются по алфавиту.

Ответы [ 2 ]

22 голосов
/ 19 марта 2012

Вы всегда можете конвертировать ваши данные в фактор. Например, предположим, что у нас есть

x = c("January", "February", "March", "January")  

Затем, чтобы преобразовать в множитель, мы имеем:

x_fac = factor(x, levels = month.name)

, который по сортировке дает:

R> sort(x_fac)
[1] January  January  February March   
12 Levels: January February March April May June July August ... December
3 голосов
/ 19 марта 2012

Это грубо, но если вы хотите создать функцию для сортировки или упорядочения строк по месяцам, это сработает:

sort.month <- function(x, dataframe = NULL, abbreviated = FALSE){
    y <- data.frame(m1 = month.name, m2 = month.abb, n = 1:12)
    z <- if(abbreviated) match(x, y[, 'm2']) else match(x, y[, 'm1'])
    x <- if(is.null(dataframe)) x else dataframe
    h <- data.frame(z, x)
    h[order(z), ][, -1]
}

#examples
x <- sample(month.name, 20, r=T)
a<-data.frame(y= x, k =1:20, w=letters[1:20])
sort.month(a$y, a)
sort.month(a$y)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...