【发布时间】:2016-07-26 15:33:20
【问题描述】:
我有一个表格,其中包含“开始”和“结束”两列,其中包含各自开始和结束期间的日期和时间,如下所示:
Sr. No. Start End
1 22May2001:00:00:00 27May2001:23:59:59
2 28May2001:00:00:00 26Jun2001:23:59:59
我想将上述日期时间转换为以下格式(带时间戳的 ISO8601):
Sr. No. Start End
1 2001-05-22 00:00:00 2001-05-27 23:59:59
2 2001-05-28 00:00:00 2001-06-26 23:59:59
我已使用此链接提供的代码:http://www.stat.berkeley.edu/~s133/dates.html
View(my_table)
str(my_table)
my_table$startD <- as.Date(my_table$start, "%d%b%Y:%H:%M:%S")
my_table$startT <- strptime(my_table$start, format = "%d%b%Y:%H:%M:%S")
到目前为止,我的尝试给了我这样的两列:
StartD StartT
2001-05-22 2001-05-22
这是不可取的。有人可以建议我通过上述或任何替代方法将日期时间转换为所需格式吗?
【问题讨论】:
-
您需要一个日期时间类(即 POSIXct 或 POSIXlt)。您可以使用
as.POSIXct或strptime进行解析,例如library(dplyr) ; df %>% mutate_at(-1, as.POSIXct, format = '%d%b%Y:%H:%M:%S')或等效项。请注意,在午夜打印两者都省略了时间部分,但它仍然被存储。 -
as.Date 只转换日期而不是时间。试试: my_table$startD
-
@Dave2e:当我尝试使用“as.POSIXct()”时。我遇到了一个错误: as.POSIXlt.character(as.character(x), ...) 中的错误:字符串不是标准的明确格式,。无论如何感谢您的帮助。
-
你需要指定参数名:
format = "%d%b%Y:%H:%M:%S",否则会假定解析字符串是第二个参数,用于设置时区。
标签: r