Переупорядочить уровни факторов по дням недели в R

у меня есть следующие данные.кадр в R:

> daily
        DoW         Duration
1    Friday 14.0000000000000
2    Monday 21.0000000000000
3  Saturday 12.0000000000000
4  Thursday 28.0000000000000
5   Tuesday 12.0000000000000
6 Wednesday 91.0000000000000
7    Sunday 20.0000000000000

Я хотел бы изменить порядок уровней факторов, чтобы недели были в (США) порядке дня недели.

похоже, я могу сделать это медленно, загадочным образом, с relevel(). Но это занимает только 1 числовой аргумент и перемещает его наверх. Итак,relevel(daily$DoW, 7), перемещает воскресенье на вершину, но остальные остаются неупорядоченными (что означает, что мне нужно релевантно его в обратном порядке).

выполнимо, но должен быть лучше, правда?

(решение временных рядов также приемлемо.)

2 ответов


вам нужно указать уровни в факторе, а затем использовать order с индексацией:

daily$DoW <- factor(daily$DoW, levels= c("Sunday", "Monday", 
    "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"))

daily[order(daily$DoW), ]

вместо factor, что вы хотите это Ordered.Factor.

эта строка кода R преобразует DoW переменная к "упорядоченному фактору":

daily$DoW <- ordered(daily$DoW, levels=c("Monday", "Tuesday", "Wednesday", "Thursday", 
"Friday", "Saturday", "Sunday"))

теперь, когда вы используете table, plot или любые другие функции, о Dow это будет заказ, который вы указали выше.