19

我在 R,all_symbols$Time 中有一个时间向量,我试图找出如何获取时间(或将时间转换为字符串而不丢失信息)。我用

strptime(all_symbol$Time[j], format="%H:%M:%S")

由于某种原因假设日期是今天并返回

[1] 《2013-10-18 09:34:16》

R 中的日期和时间格式非常烦人。我试图只在不添加太多软件包的情况下获得时间(真的任何——我在无法安装库的学校计算机上)。

4

2 回答 2

19

使用strptime后,您必然会获得一个日期时间对象,并且格式字符串中没有日期的默认行为是假设今天的日期。如果您不喜欢这样,则需要在前面添加一个字符串,该字符串是您选择的日期。

@James 的建议等同于我的建议:

format(all_symbol$Time[j], format="%H:%M:%S")

我所知道的唯一具有时间类的包(即没有关联日期值的时间)是包:chron。但是,我发现使用格式作为从 POSIXt 对象输出字符值的一种方式非常适合需要因子输入的函数。

于 2013-10-18T23:49:47.243 回答
2

最近遇到了同样的问题,发现这个帖子和其他帖子R:如何处理没有日期的时间?鼓舞人心。我想为有类似问题的人贡献一点。

如果您只想以 R 为基础,请利用as.Date(..., format = ("..."))将日期转换为标准格式。然后,您可以使用substr来提取时间。例如substr("2013-10-01 01:23:45 UTC", 12, 16)给你01:23

如果您可以使用 package lubridate,那么类似的功能mdy_hms将使生活变得更加轻松。并且substr大部分时间都在工作。

如果要比较时间,如果它们在 Date 或 POSIXt 对象中,它应该可以工作。如果您只想要时间部分,则可能将其强制转换为数字(您可能需要稍后将其转换回来)。例如as.numeric(hm("00:01"))60,这意味着它是 00:00:00 之后的 60 秒。as.numeric(hm("23:59"))会给86340

于 2018-08-20T14:31:35.960 回答