Ответ 1
Вам нужно указать уровни в коэффициенте, а затем использовать order
с индексированием:
daily$DoW <- factor(daily$DoW, levels= c("Sunday", "Monday",
"Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"))
daily[order(daily$DoW), ]
У меня есть следующий data.frame в 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
Я бы хотел изменить порядок уровней факторов, чтобы недели были в (US) день недели.
Похоже, я могу сделать это медленным, загадочным способом с помощью relevel()
. Но это занимает всего 1 числовой аргумент и перемещает его вверх. Таким образом, relevel(daily$DoW, 7)
, перемещается в воскресенье вверх, но остальные остаются неупорядоченными (это означает, что мне нужно согнуть его в обратном порядке).
Допустим, но должен быть лучший способ, не так ли?
(Решение временных рядов также приемлемо.)
Вам нужно указать уровни в коэффициенте, а затем использовать 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
, это будет указанный вами порядок.