我对R的知识和经验有限,请耐心等待。转换时间间隔R
我有持续时间的测量在以下形式:
d + H:M:S.S
例如3 + 23:12:11.931139,其中d =天,h =小时,m =分钟,s.s =小数秒。我想创建这些值的直方图。
有没有简单的方法来将这种字符串输入转换为数字形式,如秒?我发现的所有信息似乎都适用于日期时间对象。
理想情况下,我希望能够在命令行上将数据列表传递给R,因此可以即时创建直方图。
干杯
洛里斯
我对R的知识和经验有限,请耐心等待。转换时间间隔R
我有持续时间的测量在以下形式:
d + H:M:S.S
例如3 + 23:12:11.931139,其中d =天,h =小时,m =分钟,s.s =小数秒。我想创建这些值的直方图。
有没有简单的方法来将这种字符串输入转换为数字形式,如秒?我发现的所有信息似乎都适用于日期时间对象。
理想情况下,我希望能够在命令行上将数据列表传递给R,因此可以即时创建直方图。
干杯
洛里斯
基于SO另一种解决方案:
op <- options(digits.secs=10)
z <- strptime("3+23:12:11.931139", "%d+%H:%M:%OS")
vec_z <- z + rnorm(100000)
hist(vec_z, breaks=20)
短解释:首先,我设置,所述毫秒所示的这种方式的选项。现在,如果您在控制台中键入z
,则会显示“2012-05-03 23:12:11.93113”。然后,我将你的字符串解析成一个日期对象。然后我创建更多日期并绘制直方图。我认为对你来说重要的一步是解析,strptime
应该可以帮助你。
我会做这样的:
str = "3+23:12:11.931139"
result = sum(as.numeric(unlist(strsplit(str, "[:\\+]", perl = TRUE))) * c(24*60*60, 60*60, 60, 1))
> result
[1] 342731.9
然后,你可以把它包装成一个功能,并应用在列表或载体。
虽然我希望避免自己做数学,但这很好,也是通用的。 – loris
这正是我所需要的。不知何故,我忽略了'strptime'。实际上我并不需要毫秒,因为这些值一般在几个小时左右,但很高兴知道如何去做。 – loris
@loris很高兴我能帮到你。如果您的问题得到解答,您是否可以将其标记为已接受,这样它就会脱离未解决问题的列表? –