我需要一些幫助來將存儲在向量中的少數字符串與存儲在數據幀(data.table)列中的地址進行匹配。我的數據庫大約有100萬條記錄,因此我更喜歡使用data.table。在變量中搜索字符串並返回匹配的字符串
下面是數據和載體的虛擬樣品 -
my <- data.frame(add=c("50, nutan nagar Mum41","50, nutan Mum88 Maha","77, amar nagar Blr79 Bang","54, veer build Chennai3242","amar 755 Blr 400018"))
vec1 <- c("Mum","Blr","Chennai")
我需要在我的變量添加與每個地址搜索每個串的VEC 1。如果變量在地址中找到vec1中的任何字符串,它應該在新列中返回匹配的字符串結果。如果是多次匹配,則它應該返回第一個匹配的值,即Incase,它會在單個地址中找到「Mum」和「Blr」,並返回「Mum」。
基於僞數據,預期的結果將是 -
my$result <- c("Mum","Mum","Blr","Chennai","Blr")
我試圖用grep/grepl但他們給錯誤「參數‘模式’的長度爲> 1且僅第一個元素將被用來「
我嘗試使用str_match
,但得到TRUE/FALSE在向量中的每個串在地址中發現而不是價值本身。
我們該如何做到這一點?
比我的解決方案更清潔,沒有意識到這些功能。感謝您介紹我;) – Florian
@akrun,太棒了!謝謝!!你做得很簡單。 – user1412
@akrun,該解決方案適用於虛擬數據,但不適用於實際數據。我已經檢查過變量類型並將它們轉換爲字符,改變了類等,但它仍然沒有從矢量中找到任何文本。在我的實際數據文本中都是韓文字符,這會是一個問題嗎?我們怎麼能過來的。自昨晚以來我一直在嘗試,但沒有運氣。嘗試了兩種方法。請建議! – user1412