簡體   English   中英

按R中的星期幾重新排序因子水平

[英]Reorder factor levels by day of the week in R

我在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變量轉換為“Ordered Factor”:

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

現在,當您在Dow上使用tableplot或任何其他功能時,它將是您在上面指定的訂單。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM