난 지저분한 문자열의 열을 포함하는 데이터 프레임이 있습니다. 각 지저분한 문자열에는 그 안에 어딘가에있는 단일 국가의 이름이 포함됩니다. 여기에 장난감 버전입니다 : (country.name
)를 관련 국가 이름 국가 이름에 대한 정규식 등에서 특정 요소를 뽑아 오기 (regex
)와 또 다른 한 다음 countrycode
패키지문자열에서 정규식으로 새 문자열
df <- data.frame(string = c("Russia is cool (2015) ",
"I like - China",
"Stuff happens in North Korea"),
stringsAsFactors = FALSE)
덕분에, 나는 또한이 유용한 열을 포함하는 두 번째 데이터 세트를 . 우리는이 같은이 데이터 세트를로드 할 수
library(countrycode)
data(countrycode_data)
내가 df$string
의 각 행에 국가 이름을 탐지하는 countrycode_data$regex
에서 정규 표현식을 사용하는 코드를 작성하려합니다; 해당 정규 표현식을 적절한 국가 이름과 연관시킵니다 (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%
의 다양한 조합을 사용해 보았습니다. 그러나 방향이나 크기 (또는 둘 다)가 잘못되었습니다.
... 편집 I 내가'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