我对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 应该帮助你
z
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
然后,您可以将其包装到函数中并应用于列表或向量 .
2 回答
基于SO的另一种解决方案:
简短说明:首先,我以显示毫秒的方式设置选项 . 现在,如果您在控制台中键入
z
,则会得到"2012-05-03 23:12:11.93113" . 然后,我将您的字符串解析为日期对象 . 然后我创建了一些日期并绘制直方图 . 我认为对你来说重要的一步是解析,strptime
应该帮助你我会这样做:
然后,您可以将其包装到函数中并应用于列表或向量 .