解析不同格式的日期 [英] Parsing dates with different formats
问题描述
我有一个csv文件,其中的列包含日期,但是日期采用两种不同的格式:"m/d/y H:M"和"y m d H:M:S".我想用一种格式用这些日期创建一个新列(我不在乎是哪一种).我尝试了parse_date_time函数,但它仅适用于一种格式,不能同时适用于两种格式.我该怎么做呢?
I have a csv file with a column containing dates, but the dates are in two different formats: "m/d/y H:M" and "y m d H:M:S". I want to make a new column with these dates all in one format (I don't care which one). I tried the parse_date_time function but it would only work for one of the formats, not both. How can I go about doing this?
这是我尝试使用的代码:
Here is the code I was trying to use:
newdata <- mutate(data,
newcolumn = parse_date_time(x = data$date_column,
orders = c("m/d/y H:M", "y m d H:M:S"),
locale = "eng") )
以下是列中一些示例日期:
Here are some example dates from the column:
x <- c("6/21/2006 0:00",
"1889-06-13 00:00:00",
"6/28/2012 0:00",
"5/19/2015 0:00",
"6/6/2016 0:00",
"1884-05-24 00:00:00",
"7/28/2013 0:00")
推荐答案
anytime
包正是这样做的-启发式评估合理的格式:
The anytime
package does just that -- heuristically evaluating plausible formats:
R> library(anytime)
R> x <- c("6/21/2006 0:00",
+ "1889-06-13 00:00:00",
+ "6/28/2012 0:00",
+ "5/19/2015 0:00",
+ "6/6/2016 0:00",
+ "1884-05-24 00:00:00",
+ "7/28/2013 0:00")
R> anytime(x)
[1] "2006-06-21 CDT" "1889-06-13 CST" "2012-06-28 CDT"
[4] "2015-05-19 CDT" NA "1884-05-24 CST"
[7] "2013-07-28 CDT"
R>
默认情况下,它使用Boost的date_time库解析器,并且不不执行一位数字的月/日,因此元素6上的 NA
.但是我们还添加了R的解析器作为后备:
It uses Boost's date_time library parser by default, and that one does not do single digit month/day, hence the NA
on element six. But we also added R's parser as a fallback:
R> anytime(x, useR=TRUE)
[1] "2006-06-21 CDT" "1889-06-13 CST" "2012-06-28 CDT"
[4] "2015-05-19 CDT" "2016-06-06 CDT" "1884-05-24 CST"
[7] "2013-07-28 CDT"
R>
因此,这里一切正常而没有单一格式说明.
So here is all just works without a single format specification.
这篇关于解析不同格式的日期的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!