按日期对R数据框中的列进行排序:1999年后失败

时间:2015-10-30 17:22:58

标签: r sorting date

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")),]

1 个答案:

答案 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"