提取第二个空格和"之间的数字,"在R

时间:2017-01-02 10:52:59

标签: r regex

我有一个r数据框。其中一个专栏" A"有字符串。我想提取字符串中第二空格和"," 之间的数字。

数据框看起来像

       A        
XY Z 123, 30009 Addr
AB CBA 12, 900000 Addr
FC AX 1234, 977777 Addr
.
.

结果df应该看起来像

       A
123
12
1234
.
.

需要提取的数字长度不固定。

1 个答案:

答案 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))