使用字符串中的数字子集数据框?

时间:2015-01-27 17:23:49

标签: regex r

我有大型数据框,看起来像这样:

df1 = data.frame(A=c("A23", "A53", "B68"), B=c("Something-2030-002", "Something-4030-002",
                                               "Something-5030-002"))

我希望将其子集化为仅包含Something-X的观察值,其中X <5。那就是:

df2 = data.frame(A=c("A23", "A53"), B=c("Something-2030-002", "Something-4030-002")

我怎么能用R做到这一点?

由于

1 个答案:

答案 0 :(得分:1)

您可以使用sub删除除第一个“ - ”后面的一位数字以外的所有字符,并使用它来创建逻辑索引。

df1[sub('[^-]+-(.).*', '\\1', df1$B)<5,]
#    A                  B
#1 A23 Something-2030-002
#2 A53 Something-4030-002

正则表达式演示

  [^-]+-(.).*

Regular expression visualization

Debuggex Demo