我有以下数据集
df <- data.frame(id = c(1,2,3), names = c( "Adam Jones, John David, Maddy Kones",
"Adam Smith, Maddy Kones, John David", "Maddy Kones, John Peterson, Adam Smith"))
那是
我希望看到“约翰”紧接在“亚当”之后的行
所以我的输出是
id names
1 Adam Jones, John David, Maddy Kones
我不知道该如何使用正则表达式。我到目前为止已经尝试过
output <- df [grep("Adam" [^,]* "John", df$names),]
一种基本的R方法是grepl
与适当的模式一起使用:
Adam\b[^,]*,\\s*John.*
这表示要匹配,Adam
然后匹配单词边界和直到第一个逗号的所有内容,然后紧接着John
是下一个术语。我们没有任何丑陋的例子,因为如果约翰必须跟随亚当,这意味着将始终有一个逗号分隔这两个名字。
码:
df[grepl("Adam\\b[^,]*,\\s*John.*", df$names), ]
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句