用R格式化日期

时间:2016-08-31 21:20:03

标签: r date format

我在R中有两个日期字符串,两者的格式不同。我如何转换一个日期字符串以与另一个日期字符串保持一致。下面是两种格式的示例,不要关注日期而是关注字符串本身的格式。谢谢!

"Wed Aug 31 14:14:13 2016" 
"09/12/2016 10:20 PM EDT"

2 个答案:

答案 0 :(得分:2)

有关格式字符串的详细信息,请参阅help(strptime)

R> d1 <- as.Date("Wed Aug 31 14:14:13 2016", "%a %b %d %H:%M:%S %Y")
R> d1
[1] "2016-08-31"
R> d2 <- as.Date("09/12/2016 10:20 PM EDT", "%m/%d/%Y %H:%M")
R> d2
[1] "2016-09-12"
R> 

将它们解析为Date个对象后,您可以按照自己喜欢的方式进行格式化。同上Datetime个对象。

编辑:由于大多数日期格式实际上都是“已知”,您还可以迭代给定的一组并“猜测”。我在RcppBDT中有一些代码(在GitHub上但在CRAN上还没有)处理这个:

R> library(RcppBDT)    
R> 
R> as.Date(toPOSIXct(c("Wed Aug 31 14:14:13 2016", "09/12/2016 10:20 PM EDT"))) 
[1] "2016-08-31" "2016-09-12"    
R>   

答案 1 :(得分:0)

R中的日期起初可能是一个棘手的概念。查看as.Date()函数将字符串转换为日期,并查看stpftime()函数以将日期时间解析为字符串。根据您当前值的格式,其中一个或两个都很有用。

  • ?strptime
  • ?as.Date

基本上,您最终要做的是解析日期的各个组件以获得所需的内容(例如,日,月,年),但解析因字符串的当前格式而异。很难对这样一个广泛的问题给出明确的答案,但你肯定想要熟悉上述功能。