我有一个包含日期的数据的电子表格,如下所示:
Mon Jul 16 15:20:22 +0000 2012
有没有办法在不使用正则表达式的情况下将这些转换为R日期(最好是PST),还是没有办法吗?我很感激有效地进行这种转换的想法。
答案 0 :(得分:8)
当然,只需使用strptime()
来解析字符串中的时间:
R> strptime("Mon Jul 16 15:20:22 +0000 2012",
+ format="%a %b %d %H:%M:%S %z %Y")
[1] "2012-07-16 10:20:22 CDT"
R>
使用我的本地时区(CDT)。如果您的是Pacific,则可以在
中明确设置R> strptime("Mon Jul 16 15:20:22 +0000 2012",
+ format="%a %b %d %H:%M:%S %z %Y", tz="America/Los_Angeles")
[1] "2012-07-16 08:20:22 PDT"
R>
与UTC的7小时增量相符合。
答案 1 :(得分:6)
在?strptime
的示例部分中,几乎有一个如何执行此操作的逐字示例:
# ?strptime example:
## An RFC 822 header (Eastern Canada, during DST)
strptime("Tue, 23 Mar 2010 14:36:38 -0400", "%a, %d %b %Y %H:%M:%S %z")
# your data...
strptime("Mon Jul 16 15:20:22 +0000 2012", "%a %b %d %H:%M:%S %z %Y")
答案 2 :(得分:0)
也可以使用lubridate
tidyverse
包来完成此操作
library(lubridate)
parse_date_time("Mon Jul 16 15:20:22 +0000 2012", orders = "amdHMSzY")
这是我更喜欢的。