我有一个r数据框。其中一个专栏" A"有字符串。我想提取字符串中第二空格和"," 之间的数字。
数据框看起来像
A
XY Z 123, 30009 Addr
AB CBA 12, 900000 Addr
FC AX 1234, 977777 Addr
.
.
结果df应该看起来像
A
123
12
1234
.
.
需要提取的数字长度不固定。
答案 0 :(得分:2)
我们可以使用sub
。匹配一个或多个非空格(\\S+
),后跟一个或多个重复两次的空格(\\s+
)({2}
),然后将一个或多个数字作为一组捕获((\\d+)
)后跟一个,
和其他字符,直到字符串结尾,并将其替换为第二个捕获组(\\2
)的反向引用
df1$A <- as.numeric(sub("(\\S+\\s+){2}(\\d+),.*", "\\2", df1$A))
df1$A
#[1] 123 12 1234
df1 <- structure(list(A = c("XY Z 123, 30009 Addr", "AB CBA 12, 900000 Addr",
"FC AX 1234, 977777 Addr")), .Names = "A", class = "data.frame",
row.names = c(NA, -3L))