Переупорядочить уровни факторов по дням недели в 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
это будет заказ, который вы указали выше.