只想要R中日期时间对象的时间部分

时间:2013-10-18 23:36:45

标签: r time

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

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

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

  

[1]“2013-10-18 09:34:16”

R中的日期和时间格式非常烦人。我试图只是在没有添加太多包的情况下获得时间(实际上是任何 - 我在学校的计算机上,我无法安装库)。

2 个答案:

答案 0 :(得分:16)

一旦你使用strptime,你必须获得一个日期时间对象,格式字符串中没有日期的默认行为是假设今天的日期。如果您不喜欢,则需要预先添加一个字符串,该字符串是您选择的日期。

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

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

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

答案 1 :(得分:0)

最近遇到了同样的问题,发现这篇文章和其他帖子R: How to handle times without dates?令人鼓舞。我想为那些有类似问题的人做些贡献。

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

如果您可以使用软件包lubridate,则mdy_hms之类的功能将使生活变得更加轻松。而且substr在大多数情况下都是有效的。

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