Mit*_*ops 19 r dataframe r-factor
我在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
Run Code Online (Sandbox Code Playgroud)
我想更改因子级别的顺序,以便周数符合(美国)星期几的顺序.
看起来我可以用一种缓慢而令人费解的方式做到这一点relevel().但这只需要1个数字参数并将其移至顶部.所以,relevel(daily$DoW, 7)将星期日移到顶部,但其余的仍然是无序的(这意味着我需要以相反的顺序重新排列).
可行,但必须有更好的方法,对吧?
(时间序列解决方案也可以接受.)
Tyl*_*ker 23
您需要在factor中指定级别,然后使用order索引:
daily$DoW <- factor(daily$DoW, levels= c("Sunday", "Monday",
"Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"))
daily[order(daily$DoW), ]
Run Code Online (Sandbox Code Playgroud)
factor您想要的是 an ,而不是a Ordered.Factor。
这行 R 代码将DoW变量转换为“有序因子”:
daily$DoW <- ordered(daily$DoW, levels=c("Monday", "Tuesday", "Wednesday", "Thursday",
"Friday", "Saturday", "Sunday"))
Run Code Online (Sandbox Code Playgroud)
现在,当您使用table、plot或任何其他函数时Dow,它将按照您上面指定的顺序进行。