我对R的知识和经验有限,所以请多多包涵。
我有以下形式的持续时间测量:
d+h:m:ss
例如 3+23:12:11.931139,其中 d=天,h=小时,m=分钟,ss=十进制秒。我想创建这些值的直方图。
有没有一种简单的方法可以将此类字符串输入转换为数字形式,例如秒?我发现的所有信息似乎都针对日期时间对象。
理想情况下,我希望能够在命令行上将数据列表通过管道传输到 R,从而动态创建直方图。
干杯
洛里斯
我会这样做:
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
然后,您可以将其包装成一个函数并应用于列表或向量。
基于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
应该可以帮助您