私は乱雑な文字列の列を含むデータフレームを持っています。それぞれの乱雑な文字列には、その中のどこかの国の名前が含まれています。ここではおもちゃのバージョンです:(country.name
)に関連付けられている国名を持つ国名のregexs(regex
)と別で1:countrycode
パッケージに文字列から正規表現への新しい文字列
df <- data.frame(string = c("Russia is cool (2015) ",
"I like - China",
"Stuff happens in North Korea"),
stringsAsFactors = FALSE)
おかげで、私はまた、2つの有用な列を含む第2のデータセットを持っています。私たちはこのように、このデータセットをロードすることができます。
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%
のさまざまな組み合わせを試してみましたが、方向や大きさ(またはその両方)が間違っています。
私は 'countrycode_data'データフレームで' regex'列を見ていないよ... EDIT、用事、私は?私は '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-withditional-characters – Bulat