0
我有一個問題,從字符串列表部分匹配到數據框。R - 部分匹配字符串
我DF具有這樣的結構:
> df
mrun address stat
8988741 cerro pedregal 8536 , Antofagasta, Antofagasta OK
17625851 rancagua 2777 , Iquique, Tarapacá OK
9423953 picarte 4100 , Valdivia, Los Ríos OK
3459140 balmaceda 935 , Temuco, La Araucanía OK
24507700 rancagua 1940, La Serena, Coquimbo OK
,我有一個字符串與此值的列表:
> address_list
c("balmaceda", "rancagua", "bombero garrido")
如何選擇的行比列表中的任何元素匹配?
這是我的願望輸出:
> df_solution
mrun address stat
17625851 rancagua 2777 , Iquique, Tarapacá OK
3459140 balmaceda 935 , Temuco, La Araucanía OK
24507700 rancagua 1940, La Serena, Coquimbo OK
編輯:通過saurav謝卡爾給出的解決方案適用於少數元素的ADDRESS_LIST。就我而言,我真正ADDRESS_LIST有5000點以上的行和DF有20萬行和grep拋出這個錯誤:
> df$flag[grep(address_list,df$address)]<- 1
Error in grep(address_list,df$address) :
invalid regular expression, reason 'Out of memory'
我有很多的RAM,所以我不認爲這件事。我尋找一個解決方案,但我沒有找到任何方法來做到這一點。 SO中唯一的關閉線程是this link,但我不知道如何適用於我的情況。
我的會話信息:
> sessionInfo()
R version 3.3.2 (2016-10-31)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows >= 8 x64 (build 9200)
locale:
[1] LC_COLLATE=Spanish_Latin America.1252 LC_CTYPE=Spanish_Latin America.1252
[3] LC_MONETARY=Spanish_Latin America.1252 LC_NUMERIC=C
[5] LC_TIME=Spanish_Latin America.1252
attached base packages:
[1] stats graphics grDevices utils datasets methods base
other attached packages:
[1] gridExtra_2.2.1 ggplot2_2.2.0 plyr_1.8.4 reshape_0.8.6
在幾分鐘內我會試試這個。順便說一句,我的address_list有1500個值。有沒有辦法在管道內將所有這些值分開? –
「bombero garrido」是一個字符串,因此df $ adrress中的值可能是「bombero garrido 23345,valdivia,losríos」,「bombero garrido 138,Antofagasta,Antofagasta」等。你的想法迫使我將「 bombero garrido「。 –
給你的第二個評論 - 無論你保持文本分離還是一起它應該工作。讓我知道如果你仍然有問題 –