我有一个类似于以下内容的数据框:
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"))
答案 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