我有一个数据框,其中包含一个包含数字和可变单位的列:
num <- c(1:5)
val <- c("5%","10K", "100.2mv","1.4g","1.007kbars")
df <- data.frame(num,val)
df
如何从df $ val创建两个新列,一个只包含数字,另一个包含单位?
感谢您的帮助。
答案 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位数,后跟可选点,后跟可选数字”。