我正在我的数据中的几个列上使用parse_date_time
,这些列有多种日期格式。例如,列可以具有日期格式"%d-%b-%y"
和,"%m/%d/%Y"
。
因此,"06/11/2017"
("%m/%d/%Y"
)和"11-Jun-17"
("%d-%b-%y"
)对应于同一日期:"2017-06-11“("%Y-%m-%d"
)。
我使用lubridate::parse_date_time
解析日期,其中可以在orders
参数中指定不同的日期格式:
x <- c("06-11-2017", "11-Jun-17")
parse_date_time(x, orders = c("%d-%b-%y", "%m/%d/%Y"), locale = "eng")
# [1] "2017-11-06 UTC" "2017-06-11 UTC"
虽然这两个日期都应该显示为"2017-06-11"
,但在"%m/%d/%Y"
日期中不能正确解析月和日,通过更改月份来检查:
x <- c("05-11-2017", "11-Jun-17")
parse_date_time(x, orders = c("%d-%b-%y", "%m/%d/%Y"), locale = "eng")
# [1] "2017-11-05 UTC" "2017-06-11 UTC"
05
应该被解析为%m
,但它不是。
我对parse_date_time
的调查表明存在一些bug,我认为这就是其中的情况。然而,我想知道我能做些什么来获得我所需要的结果?
更新:下面是我正在使用的数据的一个示例。通过添加“精确=真”,它解决了我的问题。
test$Transmission.date 1“22-2月16”“10-3月-16”“10-3月-16”“10-3月16”“15-1月-16”“15-1月-16”"4/6/2016“”12 "4/6/2016“4/6/2016”"4/6/2016“2016年12月4日“2016年12月4日”“2016年12月4日”“2016年4月12日”2016年4月12日2016年"4/12/2016“"4/12/2016”"4/12/2016“”23 "4/12/2016“4/4/2016”"4/4/2016“"4/4/2016”"4/4/2016“4/4/2016 "4/4/2016”"4/4/2016“"4/4/2016“"4/4/2016”4/4/2016“"4/4/2016”34 "4/4/2016“"4/4/2016”“test$Buyer.RFQ.Close.Date 1”25-2月16日“10-3月-16”“10-3月-16”“10-3月-16”“27-1月-16日”27日-1月16日-16“27-1月-16”“27-1月-16”"5/4/2016“12 "5/4/2016”"5/4/2016“"5/4/2016”"5/10/2016“"5/10/2016”"5/10/2016“"5/10/2016”"5/10/2016“"5/10/2016”"5/10/2016“"5/10/2016”23“2016年10月5日“2016年4月28日”、“2016年2月5日”、“2016年4月28日”、“2016年5月2日”、“2016年5月2日”、“2016年5月2日”、“2016年5月2日”、“2016年5月2日”、“2016年5月2日”、“2016年4月28日”、“2016年5月2日”、“2016年4月28日”、“2016年5月2日”“test$RFQ.close.date 1”、“2016年2月25日至16日”“10-3月-16”“10-3月-16”“10-3月-16”“27-1月-16”“2016年1月27日-16日”"4/22/2016“12 "4/22/2016”"4/22/2016“"4/22/2016”“4/22/2016”“2016年5月3日”“2016年5月3日”、“2016年3月5日”、“2016年5月3日”、“2016年5月3日”、“2016年5月3日”、“2016年5月3日”、“2016年3月23日”、“2016年4月28日”、“2016年4月28日”、“2016年4月28日”、"4/28/2016“、"4/28/2016”、"4/28/2016““2016年4月28日"”34 "“2016年4月28日”
发布于 2017-08-29 19:47:34
如果它只是两种不同的格式,您可以相对容易地在基R中完成它。如果可以有更多的格式,则需要其他方法。
x = c("06/11/2017", "11-Jun-17")
as.Date(x, format = c("%m/%d/%Y", "%d-%b-%y")[1 + grepl(pattern = "\\D{3}", x)])
#[1] "2017-06-11" "2017-06-11"
https://stackoverflow.com/questions/45946926
复制相似问题