Rに次のdata.frameがあります。
_> 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)
は日曜日を一番上に移動しますが、残りは順序付けられていません(つまり、逆の順序でレベルを変更する必要があります)。
実行可能ですが、もっと良い方法があるはずですよね?
(時系列ソリューションも受け入れられます。)
Factorでレベルを指定してから、インデックス付けで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
で他の関数を使用すると、上記で指定した順序になります。