我在R中有一个向量的向量,all_symbols $ Time我试图找出如何获得JUST的时间(或将时间转换为字符串而不会丢失信息)。我用
strptime(all_symbol$Time[j], format="%H:%M:%S")
由于某种原因假定日期是今天并返回
[1]“2013-10-18 09:34:16”
R中的日期和时间格式非常烦人。我试图只是在没有添加太多包的情况下获得时间(实际上是任何 - 我在学校的计算机上,我无法安装库)。
答案 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
。