我想用正則表達式字符串部分匹配數據集中列的內容。然後我想要匹配的行在新列中返回特定匹配的正則表達式。我的實際數據集很大(130萬行),包含300個正則表達式,因此找到一種自動完成此操作的方法非常重要,因此添加新的正則表達式不需要進行代碼調整。部分字符串與新列中的匹配正則表達式匹配 - R
爲了證明:
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(subset not based on exact match)成功地對數據進行子集化,這很好地工作,但是這是我真正努力的下一步!
我有一些進步在嘗試這個,主要是基於我已經適應了這樣的代碼的建議(partial string matching 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」匹配的行 - 到達那裏,但我已經用完了想法!我想知道是否有人可以提供任何指針?
謝謝!
不知道你想要輸出什麼。正則表達式匹配嗎?你可以發佈所需的輸出列嗎? –
是的,你是對的@PierreLafortune所以對於單詞'部分'和正則表達式'ly',我想'ly'在匹配列中擴展,我的實際數據集基於醫藥處方的項目代碼,這些醫藥處方在拼寫/商品名稱等方面有所不同 - 我的正則表達式將提供與標準化詞組的鏈接,從而使我能夠將物品代碼與實際產品分配相匹配 - 很難解釋何時數據集太大而無法發佈! –
如果你想知道哪個模式匹配,你需要做兩個'grep'。如果*兩者匹配,您還應該有一個應急計劃。如果你統一你的例子,你的問題會更清楚。你最初談論的是匹配'「ly」',但是當你分享代碼的時候它就是''llod'''。 – Gregor