如何用非字母数字值分割字符串

时间:2020-10-03 19:11:25

标签: r

我有一个类似于以下内容的数据框:

df = data.frame(a=c("John Doe", "Jane Doe", "Doe John"), b=c(" 4 COW 1518 $ 75.75", " 1 BULL 1870 $ 84.00", " 2 BLK BULL 1877 $ 84.00"))

enter image description here

如何基于非字母数字值在b列中拆分字符串,所以我将得到以下内容? enter image description here

1 个答案:

答案 0 :(得分:2)

我们可以使用extract中的tidyr通过使用正则表达式模式将字符捕获为一组来将列分成多列

library(dplyr)
library(tidyr)
df %>% 
 extract(b, into = c('c', 'd', 'e', 'f'), 
       '^\\s*(\\d+)\\s+([A-Z ]+)\\s+(\\d+)\\D+([0-9.]+)', convert = TRUE)

-输出

#       a c        d    e     f
#1 John Doe 4      COW 1518 75.75
#2 Jane Doe 1     BULL 1870 84.00
#3 Doe John 2 BLK BULL 1877 84.00
相关问题