R从数据框中的列中分离出数字和单位

时间:2014-05-28 11:24:02

标签: regex r

我有一个数据框,其中包含一个包含数字和可变单位的列:

 num <- c(1:5)
 val <- c("5%","10K", "100.2mv","1.4g","1.007kbars")

 df <- data.frame(num,val)
 df

如何从df $ val创建两个新列,一个只包含数字,另一个包含单位?

感谢您的帮助。

1 个答案:

答案 0 :(得分:7)

以下是使用stringr的解决方案:

library(stringr)
df$extr_nums <- str_extract(val, "\\d+\\.?\\d*")
df$extr_units <- str_replace(val, nums, "")
df
  num        val extr_nums extr_units
1   1         5%         5          %
2   2        10K        10          K
3   3    100.2mv     100.2         mv
4   4       1.4g       1.4          g
5   5 1.007kbars     1.007      kbars

正则表达式翻译为:“至少1位数,后跟可选点,后跟可选数字”。