2012-05-22 135 views
1

我对R的知识和经验有限,请耐心等待。转换时间间隔R

我有持续时间的测量在以下形式:

d + H:M:S.S

例如3 + 23:12:11.931139,其中d =天,h =小时,m =分钟,s.s =小数秒。我想创建这些值的直方图。

有没有简单的方法来将这种字符串输入转换为数字形式,如秒?我发现的所有信息似乎都适用于日期时间对象。

理想情况下,我希望能够在命令行上将数据列表传递给R,因此可以即时创建直方图。

干杯

洛里斯

回答

2

基于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应该可以帮助你。

+0

这正是我所需要的。不知何故,我忽略了'strptime'。实际上我并不需要毫秒,因为这些值一般在几个小时左右,但很高兴知道如何去做。 – loris

+0

@loris很高兴我能帮到你。如果您的问题得到解答,您是否可以将其标记为已接受,这样它就会脱离未解决问题的列表? –

2

我会做这样的:

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 

然后,你可以把它包装成一个功能,并应用在列表或载体。

+0

虽然我希望避免自己做数学,但这很好,也是通用的。 – loris