1

我对R的知识和经验有限,所以请多多包涵。

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

d+h:m:ss

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

有没有一种简单的方法可以将此类字符串输入转换为数字形式,例如秒?我发现的所有信息似乎都针对日期时间对象。

理想情况下,我希望能够在命令行上将数据列表通过管道传输到 R,从而动态创建直方图。

干杯

洛里斯

4

2 回答 2

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

然后,您可以将其包装成一个函数并应用于列表或向量。

于 2012-05-22T08:50:35.837 回答
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应该可以帮助您

于 2012-05-22T08:56:26.177 回答