我有大型数据框,看起来像这样:
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做到这一点?
由于
答案 0 :(得分:1)
您可以使用sub
删除除第一个“ - ”后面的一位数字以外的所有字符,并使用它来创建逻辑索引。
df1[sub('[^-]+-(.).*', '\\1', df1$B)<5,]
# A B
#1 A23 Something-2030-002
#2 A53 Something-4030-002
正则表达式演示
[^-]+-(.).*