2014-10-28 28 views
1

一個在我的數據幀中的列的是一個字符向量與表示爲號碼+後綴時間跨度的值,像這樣:轉換字符的時間單位(毫秒,S,US)成NUMERICS

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

有沒有一種簡單的方法可以將它變成一個數值列,所有的值都是以毫秒或秒爲單位?

回答

3

以下是一些方法。我們假設x是問題中顯示的輸入向量。

1)取下s,與e-3m替換並與e-6替換u。然後轉換爲數值:

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頁頂部有一個非常接近這個例子的例子。

+0

完美的作品,這種方法完全逃脫了我。我正在尋找函數來格式化字符向量作爲時間,感謝指針! – Hamy 2014-10-28 20:25:46