【问题标题】:formatting dates with R [closed]用 R 格式化日期 [关闭]
【发布时间】:2016-08-31 21:20:02
【问题描述】:

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

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

【问题讨论】:

标签: r date format


【解决方案1】:

有关格式字符串的详细信息,请参阅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>   

【讨论】:

    【解决方案2】:

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

    • ?strptime
    • ?as.Date

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

    【讨论】:

    • strftime 用于格式化;您大概是指strptime 用于解析
    • 是的,我的错!感谢您指出了这一点;已编辑。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-29
    • 2017-12-02
    • 1970-01-01
    • 2018-07-18
    • 1970-01-01
    • 2012-02-14
    相关资源
    最近更新 更多