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


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

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

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

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

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


2194
2017-10-18 23:36


起源

什么 class 是 all_symbols$Time?我怀疑你想用 strftime 代替。 - James
@James我不确定;我怎么检查?当我输入'A = strftime(all_symbol $ Time [j],format =“%H:%M:%S”)'我得'as.POSIXlt.character中的错误(as.character(x),.. 。):字符串不是标准的明确格式' - Erroldactyl
class(all_symbols$Time) 会给你上课。 - James


答案:


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

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

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

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


12
2017-10-18 23:49



+1 - 甚至 克罗恩氏,IIRC,代表时间的几分之一,“在它之下”。 - Josh O'Brien
@BondedDust,这不适用于绘图目的! - Ehsan M. Kermani
你的评论没有背景!如果使用 axis 你需要一个合适的 at 参数是数字和a label 这个角色的论点。如果使用其他一些图形函数,则需要将x参数与绘图函数匹配,并将该轴函数的at-argument匹配,无论这些参数可能被命名。 - 42-
@Ehsan,出于策划的目的,或许把你所有的时间放在同一天可能会有效。就像是 tt <- ymd_hm(str_c('2000-01-01', sample.time, sep = ' ')) (使用lubridate和stringr包)。然后处理 tt获得你需要的情节,例如制作时间测量的直方图。您需要修复轴标签。 - Tony Ladson


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

如果您只想基于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


0
2017-08-20 14:31