Есть ли лучший способ упорядочить уровни и факторы вместе? Я успешно заказал их, но должен быть более элегантный способ.

Создайте вектор месяца.

> mths<-month.abb
> mths
[1] "Jan" "Feb" "Mar" "Apr" "May" "Jun" "Jul" "Aug" "Sep" "Oct" "Nov" "Dec"

но это вектор символов, поэтому я конвертирую его в множители следующим образом:

> mths1<-factor(mths)
> mths1
[1] Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
Levels: Apr Aug Dec Feb Jan Jul Jun Mar May Nov Oct Sep

Но теперь порядок уровней показан по алфавиту, что не то, что нам нужно. Попытавшись сделать следующее, мы получаем уровни в правильном порядке, но данные перемешиваются.

> levels(mths1)<-mths
> mths1
 [1] May Apr Aug Jan Sep Jul Jun Feb Dec Nov Oct Mar
Levels: Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec

И тогда я попробовал это:

> mths1[]<-mths
> mths1
 [1] Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
Levels: Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec

И теперь факторы, а также их уровни отсортированы правильно.

Я хочу знать, какая динамика происходит за кулисами в каждом из вышеперечисленных случаев, так как назначения уровням и данным меня немного смутили.

Наконец, какой более элегантный способ добиться того же?


person Lazarus Thurston    schedule 16.04.2017    source источник
comment
mths1<-factor(mths,levels=mths) (или, в более общем смысле, factor(mths,levels=unique(mths))   -  person Ben Bolker    schedule 16.04.2017
comment
Вы также должны сделать его упорядоченным фактором.   -  person Roland    schedule 16.04.2017
comment
@Roland: зачем беспокоиться? Порядок не имеет большого значения, если вы не хотите (1) применять операторы сравнения или (2) использовать переменную (с ортогональными полиномиальными контрастами) в статистической модели.   -  person Ben Bolker    schedule 16.04.2017
comment
@BenBolker Или, если вы не хотите использовать ggplot2. Существует ряд причин для создания фактора. Некоторым из них упорядоченный фактор полезен, а большинству не помешает. OP, кажется, заботится о порядке, поэтому создание упорядоченного фактора кажется уместным.   -  person Roland    schedule 17.04.2017
comment
действительно ли ggplot2 нужны упорядоченные факторы? это бы меня сильно удивило. Как ggplot2 ведет себя по-разному с упорядоченными и «обычными» факторами?   -  person Ben Bolker    schedule 17.04.2017


Ответы (1)


Объединение комментариев выше в ответ

mths<-month.abb
mths
# [1] "Jan" "Feb" "Mar" "Apr" "May" "Jun" "Jul" "Aug" "Sep" "Oct" "Nov" "Dec"
mths1 <-factor(mths, levels=mths, ordered=TRUE) 
mths1
# [1] Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
# Levels: Jan < Feb < Mar < Apr < May < Jun < Jul < Aug < Sep < Oct < Nov < Dec
person Andrew Lavers    schedule 16.04.2017