0
假設我有,其水平的一個因素是重新排序因子水平
"1/1/2013" "1/1/2014" "1/1/2015" "10/1/2012" "10/1/2013" "10/1/2014" "4/1/2013" "4/1/2014" "4/1/2015" "7/1/2012" "7/1/2013" "7/1/2014"
什麼是按日期訴諸最簡單的方法?我知道我可以通過挑選並選擇手動來做到這一點...
謝謝!
假設我有,其水平的一個因素是重新排序因子水平
"1/1/2013" "1/1/2014" "1/1/2015" "10/1/2012" "10/1/2013" "10/1/2014" "4/1/2013" "4/1/2014" "4/1/2015" "7/1/2012" "7/1/2013" "7/1/2014"
什麼是按日期訴諸最簡單的方法?我知道我可以通過挑選並選擇手動來做到這一點...
謝謝!
這將排序因素的水平,使繪圖將有意義,但普通因素並沒有真正的秩序。因爲在那裏,真正成爲順序,即爲了有一個小於或大於項目之間的關係,你需要定義一個「有序」的因素(見?factor
):
> fac <- factor(c("1/1/2013", "1/1/2014", "1/1/2015", "10/1/2012", "10/1/2013" ,"10/1/2014", "4/1/2013", "4/1/2014" , "4/1/2015" , "7/1/2012", "7/1/2013", "7/1/2014"))
> levels(fac) <- levels(fac)[ order(as.Date(levels(fac), format="%m/%d/%Y"))]
> fac
[1] 7/1/2012 10/1/2012 1/1/2013 4/1/2013 7/1/2013 10/1/2013
[7] 1/1/2014 4/1/2014 7/1/2014 10/1/2014 1/1/2015 4/1/2015
12 Levels: 7/1/2012 10/1/2012 1/1/2013 4/1/2013 ... 4/1/2015
現在的水平會在訂單展示你期望:
> levels(fac)
[1] "7/1/2012" "10/1/2012" "1/1/2013" "4/1/2013" "7/1/2013"
[6] "10/1/2013" "1/1/2014" "4/1/2014" "7/1/2014" "10/1/2014"
[11] "1/1/2015" "4/1/2015"
但是,如果有重複的元素,那麼水平會比因素載體本身更短,他們仍然不是「爲了」在載體本身,因爲......這不是一個有序的因素。將該矢量轉換爲Date
-類別會更有意義。
或者你可以忽略我的建議,只會做你要求做:
> fac[ order(as.Date(fac, format="%m/%d/%Y"))]
[1] 7/1/2012 10/1/2012 1/1/2013 4/1/2013 7/1/2013 10/1/2013
[7] 1/1/2014 4/1/2014 7/1/2014 10/1/2014 1/1/2015 4/1/2015
12 Levels: 1/1/2013 1/1/2014 1/1/2015 10/1/2012 ... 7/1/2014
我會轉換成'Date'類,然後使用'order'或'sort'。 i..e'sort(as.Date(yourvec,'%d /%m /%Y'))'但是,您的描述不清晰 – akrun
您需要讓類的日期或使用不同的字符格式,如「YYYY -MM-DD」。日期類解決方案雖然更安全。 –