在R中按一周中的某一天对因子水平重新排序

ni65a41a  于 2023-01-28  发布在  其他
关注(0)|答案(2)|浏览(149)

我在R中有以下 Dataframe :

> 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()以一种缓慢而令人费解的方式来完成这一点,但它只接受一个数值参数并将其移到顶部,因此,relevel(daily$DoW, 7)将星期日移到顶部,但其余的仍然无序(这意味着我需要以相反的顺序重新调整它)。
可行,但一定有更好的办法,对吧?
(Time也可接受串联解决方案。)

z8dt9xmd

z8dt9xmd1#

您需要在factor中指定级别,然后使用order进行索引:

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

daily[order(daily$DoW), ]
mwg9r5ms

mwg9r5ms2#

而不是一个factor,你想要的是一个Ordered.Factor
这行R代码将您的DoW变量转换为“有序因子”:

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

现在,当您在Dow上使用tableplot或任何其他函数时,将按照上面指定的顺序。

相关问题