R 2.12.2:对data.frame中的日期字段进行排序不起作用

时间:2014-04-23 07:59:50

标签: r dataframe

我有一个包含日期字段和其他信息的数据框。我希望按日期排序,但从未成功过。我使用的是R 2.12.2

示例数据:

   Name          Date          Position
    Ben        2010/02/01          HR
    Cat        2011/03/01          IT
    Dan        2009/09/23         Admin

预期结果:

  Name          Date          Position
  Dan        2009/09/23         Admin
  Ben        2010/02/01          HR
  Cat        2011/03/01          IT

我尝试了以下方法,但没有一种方法正常工作:

试验1:

  

data_set = data_set [with(data_set,order(Date)),]

试验2:

  

data_set [order(strptime(data_set $ Date,format =“%Y%m%d”)),]

试验3:

  

data_set = data_set [order(as.Date(data_set $ Date,format =“%d /%m /%Y”)),]

试验4:

  

data_set = data_set [with(data_set,order(as.Date(Date,“%Y-%m-%d”))),]

请帮助。

1 个答案:

答案 0 :(得分:0)

您的试用版data_set[with(data_set, order(Date)), ]的代码也可以使用。如果没有,可能会有更大的问题。你正在尝试所有正确的事情。它最简单的完成在下面的第二行。

> data_set
##   Name       Date Position
## 1  Ben 2010/02/01       HR
## 2  Cat 2011/03/01       IT
## 3  Dan 2009/09/23    Admin
> data_set[order(data_set$Date), ]
##   Name       Date Position
## 3  Dan 2009/09/23    Admin
## 1  Ben 2010/02/01       HR
## 2  Cat 2011/03/01       IT

如果我们决定要将class更改为Date(我们应该使用日期时),那么它应该可以正常工作

> sapply(data_set, class)
##     Name     Date Position 
## "factor" "factor" "factor" 
> data_set$Date <- as.Date(data_set$Date)
> sapply(data_set, class)
##     Name     Date Position 
## "factor"   "Date" "factor" 
> data_set[order(data_set$Date), ]
##   Name       Date Position
## 3  Dan 2009-09-23    Admin
## 1  Ben 2010-02-01       HR
## 2  Cat 2011-03-01       IT