Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 设置日期的标准格式_R_Date_Standards - Fatal编程技术网

R 设置日期的标准格式

R 设置日期的标准格式,r,date,standards,R,Date,Standards,我有一张桌子 >dt ID Date 001 13-Jan-2016 002 2016-01-10 003 15-Jan-2016 004 2016-01-09 005 2016-01-11 我想把我的桌子做成这样 >dt ID Date 004 09-Jan-2016 002 10-Jan-2016 005 11-Jan-2016 001 13-Jan-2016 003 15-

我有一张桌子

>dt
ID     Date
001   13-Jan-2016
002   2016-01-10
003   15-Jan-2016
004   2016-01-09
005   2016-01-11
我想把我的桌子做成这样

>dt
    ID     Date
    004   09-Jan-2016
    002   10-Jan-2016
    005   11-Jan-2016
    001   13-Jan-2016
    003   15-Jan-2016
我想为Date变量设置默认值并使其有序。我该怎么办?
谢谢。

如果您正好有两种显示格式,您可以使用
grepl
查找字母,并使用
ifelse
根据结果传递
as.Date
不同的格式:

as.Date(dt$Date, ifelse(grepl('[a-z]', dt$Date), '%d-%b-%Y', '%Y-%m-%d'))
# [1] "2016-01-13" "2016-01-10" "2016-01-15" "2016-01-09" "2016-01-11"
如果覆盖
dt$Date
,则可以使用
order
排序:

dt$Date <- as.Date(dt$Date, ifelse(grepl('[a-z]', dt$Date), '%d-%b-%Y', '%Y-%m-%d'))
dt[order(dt$Date),]

#    ID       Date
# 4 004 2016-01-09
# 2 002 2016-01-10
# 5 005 2016-01-11
# 1 001 2016-01-13
# 3 003 2016-01-15

dt$Date checkout在
lubridate
包中,它提供了各种标准化日期的方法。一直以来,我都不知道可以将格式向量指定为
as.Date()
。我想你每天都会学到一些东西。@alistaire-向量回收-它正试图针对
c(“%d-%b-%Y”,““%F”)[c(1,2,1,2,1)]
@alistaire谢谢,这很有帮助。