我有一个包含日期字段和其他信息的数据框。我希望按日期排序,但从未成功过。我使用的是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:
试验4:data_set = data_set [order(as.Date(data_set $ Date,format =“%d /%m /%Y”)),]
data_set = data_set [with(data_set,order(as.Date(Date,“%Y-%m-%d”))),]
请帮助。
答案 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