I have the following data.frame in 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
I'd like to change the order of the factor levels so that the weeks are in (US) day-of-week order.
It looks like I can do this in a slow, puzzling way with relevel()
. But this only takes 1 numeric argument and moves it to the top. So, relevel(daily$DoW, 7)
, moves Sunday to the top, but the rest remain unordered (which means I need to relevel it in reverse order).
Doable, but there must be a better way, right?
(Time series solution also acceptable.)
You need to specify the levels in factor and then use order
with indexing:
daily$DoW <- factor(daily$DoW, levels= c("Sunday", "Monday",
"Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"))
daily[order(daily$DoW), ]