Подтвердить что ты не робот

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

У меня есть следующий 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), перемещается в воскресенье вверх, но остальные остаются неупорядоченными (это означает, что мне нужно согнуть его в обратном порядке).

Допустим, но должен быть лучший способ, не так ли?

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

4b9b3361

Ответ 1

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

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

daily[order(daily$DoW), ]

Ответ 2

Вместо factor вам нужно Ordered.Factor.

Эта строка кода R преобразует вашу переменную DoW в "Упорядоченный фактор":

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

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