我试图用一串正则表达式部分匹配数据集中列的内容。然后,我想匹配在新列中返回特定匹配正则表达式的行。我的实际数据集很大(130 万行),包含 300 个正则表达式,因此找到一种自动执行此操作的方法很重要,因此添加新的正则表达式不需要代码调整。
展示:
try.dat<-data.frame(c(1:10),c("hello","goodbye","tidings","partly","totally"))
names(try.dat)[1]<-"num"
names(try.dat)[2]<-"words"
try.dat
在这种情况下,如果一个正则表达式是“ly”,我希望在匹配行(部分,完全)中有一个带有“ly”的列,而在其他行中有一些“不匹配”的术语。我已经成功地使用 grepl (不基于精确匹配的子集)成功地对数据进行了子集化,这非常有效,但这是我真的在努力的下一步!
我在尝试这个方面取得了一些进展,主要是基于我已经适应的这个代码建议(部分字符串匹配 R ):
pattern<-c("ll|ood")
matching<-c("ood","ll")
regexes<-data.frame(pattern,matching)
output_vector<-character(nrow(try.dat))
for(i in seq_along(regexes)){
output_vector[grepl(x=try.dat$words,pattern=regexes[[i]][1])] <- regexes [[i]][2]
}
try.dat$match<- output_vector
try.dat
正如你所看到的,这会在匹配的行旁边返回一个“1”——到达那里但我已经没有想法了!我想知道是否有人可以提供任何指示?
谢谢!