R中的原始数据框包含一个名为OrdDate
的列,其值代表日期,包括12/31 / 1999,1 / 1/2007等等(超过230,000个),范围从1999年到2010年
但是,当我将R代码(跟随)的日期排序应用于数据框时,日期对于1999年的日期排序正确,但不以1/1 /年开始,显示为1/1/2009 next,之前日期如1/1/2004和1/2/2000。
我可以采取哪些措施来强制对此列进行正确的日期排序?
R代码:
sorted_frame<-frame1[order(as.Date(frame1$OrdDate, format="%m/%d/%y")),]
答案 0 :(得分:0)
说你有这个:
a<-c("12/31/2010","12/31/1999","12/31/2008","12/31/1998")
使用y
将失败,因为它是2位数的年份:
order(as.Date(a,format="%m/%d/%y"))
[1] 2 4 1 3
那是因为你有:
as.Date(a,format="%m/%d/%y")
[1] "2020-12-31" "2019-12-31" "2020-12-31" "2019-12-31"
使用Y
将达到您想要的效果,因为它是一个4位数的年份:
order(as.Date(a,format="%m/%d/%Y"))
[1] 4 2 3 1
正如R分析师指出的那样,使用sort
可能是一个更好的解决方案,因为它会将您的值作为R的日期返回:
a[order(as.Date(a,format="%m/%d/%Y"))]
[1] "12/31/1998" "12/31/1999" "12/31/2008" "12/31/2010"
sort(as.Date(a,format="%m/%d/%Y"))
[1] "1998-12-31" "1999-12-31" "2008-12-31" "2010-12-31"