我的数据框中的一列是一个字符向量,其时间跨度值表示为number + suffix,如下所示:
c("16.14ms", "7.58ms", "8.38ms", "7.29ms", "6.40ms", "5.76ms",
"5.56ms", "5.27us", "5.12ms", "5.03us", "4.91ms", "4.76ms", "16.12ms",
"7.56ms", "8.59ms", "7.16ms", "6.59ms", "5.91s", "5.62ms", "5.44ms"
)
单位仅限于微秒us
,毫秒ms
和整秒s
。
有没有一种简单的方法可以将其设置为数值列,所有值都以毫秒或秒为单位?
这里有一些方法。我们假设x
是问题中显示的输入向量。
1)拆下s
,替换为m
,e-3
然后替换u
为e-6
。然后转换为数字:
as.numeric(sub("u", "e-6", sub("m", "e-3", sub("s", "", x))))
2)这也可以使用gsubfn巧妙地完成。首先我们匹配后缀,然后使用替换列表,如下所示:
library(gsubfn)
as.numeric(gsubfn("\\D+$", list(ms = "e-3", us = "e-6", s = "e0"), x))
如果希望将问题扩展到许多时间单位,这将特别方便,因为这仅是扩展列表的问题。
请注意,在gsubfn小插图第4页的顶部,有一个非常接近此示例的示例。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句