假设我有一个等级为
的因子 "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"
按日期求助的最简单方法是什么?我知道我可以通过挑选和选择来手动完成......
谢谢!
答案 0 :(得分:1)
这将对因子的级别进行排序,以便绘图有意义,但普通因素实际上没有顺序。为了真正有秩序,即项目之间的关系小于或大于,你需要定义一个“有序”因子(见?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