[英]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
上使用table
, plot
或任何其他功能時,它將是您在上面指定的訂單。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.