我有一個數據框,其中包含一列雜亂的字符串。每個雜亂的字符串都包含某個國家的名稱。這裏有一個玩具版本:從字符串到正則表達式到新字符串
df <- data.frame(string = c("Russia is cool (2015) ",
"I like - China",
"Stuff happens in North Korea"),
stringsAsFactors = FALSE)
得益於countrycode
包,我也有,包括兩個有用的列的第二個數據集:一個爲國名regexs(regex
),另一個與相關的國家名稱(country.name
) 。我們可以加載這組數據是這樣的:
library(countrycode)
data(countrycode_data)
我想編寫使用正則表達式countrycode_data$regex
的df$string
各行中發現國名代碼;在countrycode_data$country.name
中將該正則表達式與正確的國家/地區名稱相關聯;最後,將該名稱寫入新列中的相關位置,即df$country
。執行此操作TBD後,df
應該是這樣的:
string country
1 Russia is cool (2015) Russian Federation
2 I like - China China
3 Stuff happens in North Korea Korea, Democratic People's Republic of
我不能完全換我圍繞如何做到這一點的頭。我嘗試過使用grepl
,which
,tolower
和%in%
的各種組合,但我得到的方向或尺寸(或兩者)都是錯誤的。
我沒有看到在'countrycode_data'數據幀中的'regex'列...編輯,沒關係,我我想我找到了,名爲'country.name.en.regex'? – rosscova
'countrycode_data'中的相關列只能稱爲'regex'。具有專有名稱的相關列是「country.name」。 – ulfelder
可能是這樣的東西可以幫助:http://stackoverflow.com/questions/21165256/r-merge-data-frames-allow-inexact-id-matching-eg-with-additional-characters – Bulat