Rで自作関数:convert_country_to_jp

関数名: convert_country_to_jp

引数 countryname に英語の国名を指定すると、該当する日本語の国名を返します。

大文字・小文字の揺れ(JapanJAPAN など)を吸収するため、内部で小文字に変換してからマッチングを行っています。

また、ベクトル(複数の国名)が入力された場合にも一括で変換できるように設計しています。

変換対象は、国連加盟国193か国にバチカン、コソボ、クック諸島、ニウエ、台湾を加えた全198か国とし、一部よく使われる略称や別名(USA、UK、UAE、South Koreaなど)にも対応させています。

convert_country_to_jp <- function(countryname) {
  # 大文字小文字の揺らぎをなくすため小文字に変換し、前後の余白を削除
  country_lower <- tolower(trimws(countryname))

  # 国連加盟国193か国 + バチカン、コソボ、クック諸島、ニウエ、台湾の辞書
  # 主要な別名や略称も合わせて定義
  country_dict <- c(
    # A
    "afghanistan" = "アフガニスタン",
    "albania" = "アルバニア",
    "algeria" = "アルジェリア",
    "andorra" = "アンドラ",
    "angola" = "アンゴラ",
    "antigua and barbuda" = "アンティグア・バーブーダ",
    "argentina" = "アルゼンチン",
    "armenia" = "アルメニア",
    "australia" = "オーストラリア",
    "austria" = "オーストリア",
    "azerbaijan" = "アゼルバイジャン",

    # B
    "bahamas" = "バハマ",
    "bahrain" = "バーレーン",
    "bangladesh" = "バングラデシュ",
    "barbados" = "バルバドス",
    "belarus" = "ベラルーシ",
    "belgium" = "ベルギー",
    "belize" = "ベリーズ",
    "benin" = "ベナン",
    "bhutan" = "ブータン",
    "bolivia" = "ボリビア",
    "bosnia and herzegovina" = "ボスニア・ヘルツェゴビナ",
    "botswana" = "ボツワナ",
    "brazil" = "ブラジル",
    "brunei" = "ブルネイ",
    "bulgaria" = "ブルガリア",
    "burkina faso" = "ブルキナファソ",
    "burundi" = "ブルンジ",

    # C
    "cabo verde" = "カーボベルデ",
    "cape verde" = "カーボベルデ",
    "cambodia" = "カンボジア",
    "cameroon" = "カメルーン",
    "canada" = "カナダ",
    "central african republic" = "中央アフリカ共和国",
    "chad" = "チャド",
    "chile" = "チリ",
    "china" = "中国",
    "prc" = "中国",
    "colombia" = "コロンビア",
    "comoros" = "コモロ",
    "congo" = "コンゴ共和国",
    "republic of the congo" = "コンゴ共和国",
    "costa rica" = "コスタリカ",
    "croatia" = "クロアチア",
    "cuba" = "キューバ",
    "cyprus" = "キプロス",
    "czech republic" = "チェコ",
    "czechia" = "チェコ",
    "cook islands" = "クック諸島",

    # D
    "democratic republic of the congo" = "コンゴ民主共和国",
    "drc" = "コンゴ民主共和国",
    "denmark" = "デンマーク",
    "djibouti" = "ジブチ",
    "dominica" = "ドミニカ国",
    "dominican republic" = "ドミニカ共和国",

    # E
    "east timor" = "東ティモール",
    "timor-leste" = "東ティモール",
    "ecuador" = "エクアドル",
    "egypt" = "エジプト",
    "el salvador" = "エルサルバドル",
    "equatorial guinea" = "赤道ギニア",
    "eritrea" = "エリトリア",
    "estonia" = "エストニア",
    "eswatini" = "エスワティニ",
    "swaziland" = "エスワティニ",
    "ethiopia" = "エチオピア",

    # F
    "fiji" = "フィジー",
    "finland" = "フィンランド",
    "france" = "フランス",

    # G
    "gabon" = "ガボン",
    "gambia" = "ガンビア",
    "georgia" = "ジョージア",
    "germany" = "ドイツ",
    "ghana" = "ガーナ",
    "greece" = "ギリシャ",
    "grenada" = "グレナダ",
    "guatemala" = "グアテマラ",
    "guinea" = "ギニア",
    "guinea-bissau" = "ギニアビサウ",
    "guyana" = "ガイアナ",

    # H
    "haiti" = "ハイチ",
    "honduras" = "ホンジュラス",
    "hungary" = "ハンガリー",

    # I
    "iceland" = "アイスランド",
    "india" = "インド",
    "indonesia" = "インドネシア",
    "iran" = "イラン",
    "iraq" = "イラク",
    "ireland" = "アイルランド",
    "israel" = "イスラエル",
    "italy" = "イタリア",
    "ivory coast" = "コートジボワール",
    "cote d'ivoire" = "コートジボワール",
    "côte d'ivoire" = "コートジボワール",

    # J
    "jamaica" = "ジャマイカ",
    "japan" = "日本",
    "jordan" = "ヨルダン",

    # K
    "kazakhstan" = "カザフスタン",
    "kenya" = "ケニア",
    "kiribati" = "キリバス",
    "kuwait" = "クウェート",
    "kyrgyzstan" = "キルギス",
    "kosovo" = "コソボ",

    # L
    "laos" = "ラオス",
    "latvia" = "ラトビア",
    "lebanon" = "レバノン",
    "lesotho" = "レソト",
    "liberia" = "リベリア",
    "libya" = "リビア",
    "liechtenstein" = "リヒテンシュタイン",
    "lithuania" = "リトアニア",
    "luxembourg" = "ルクセンブルク",

    # M
    "madagascar" = "マダガスカル",
    "malawi" = "マラウイ",
    "malaysia" = "マレーシア",
    "maldives" = "モルディブ",
    "mali" = "マリ",
    "malta" = "マルタ",
    "marshall islands" = "マーシャル諸島",
    "mauritania" = "モーリタニア",
    "mauritius" = "モーリシャス",
    "mexico" = "メキシコ",
    "micronesia" = "ミクロネシア",
    "moldova" = "モルドバ",
    "monaco" = "モナコ",
    "mongolia" = "モンゴル",
    "montenegro" = "モンテネグロ",
    "morocco" = "モロッコ",
    "mozambique" = "モザンビーク",
    "myanmar" = "ミャンマー",
    "burma" = "ミャンマー",

    # N
    "namibia" = "ナミビア",
    "nauru" = "ナウル",
    "nepal" = "ネパール",
    "netherlands" = "オランダ",
    "new zealand" = "ニュージーランド",
    "nicaragua" = "ニカラグア",
    "niger" = "ニジェール",
    "nigeria" = "ナイジェリア",
    "north korea" = "北朝鮮",
    "dprk" = "北朝鮮",
    "north macedonia" = "北マケドニア",
    "norway" = "ノルウェー",
    "niue" = "ニウエ",

    # O
    "oman" = "オマーン",

    # P
    "pakistan" = "パキスタン",
    "palau" = "パラオ",
    "panama" = "パナマ",
    "papua new guinea" = "パプアニューギニア",
    "paraguay" = "パラグアイ",
    "peru" = "ペルー",
    "philippines" = "フィリピン",
    "poland" = "ポーランド",
    "portugal" = "ポルトガル",

    # Q
    "qatar" = "カタール",

    # R
    "romania" = "ルーマニア",
    "russia" = "ロシア",
    "rwanda" = "ルワンダ",

    # S
    "saint kitts and nevis" = "セントクリストファー・ネイビス",
    "saint lucia" = "セントルシア",
    "saint vincent and the grenadines" = "セントビンセント・グレナディーン",
    "samoa" = "サモア",
    "san marino" = "サンマリノ",
    "sao tome and principe" = "サントメ・プリンシペ",
    "saudi arabia" = "サウジアラビア",
    "senegal" = "セネガル",
    "serbia" = "セルビア",
    "seychelles" = "セーシェル",
    "sierra leone" = "シエラレオネ",
    "singapore" = "シンガポール",
    "slovakia" = "スロバキア",
    "slovenia" = "スロベニア",
    "solomon islands" = "ソロモン諸島",
    "somalia" = "ソマリア",
    "south africa" = "南アフリカ",
    "south korea" = "韓国",
    "korea" = "韓国",
    "south sudan" = "南スーダン",
    "spain" = "スペイン",
    "sri lanka" = "スリランカ",
    "sudan" = "スーダン",
    "suriname" = "スリナム",
    "sweden" = "スウェーデン",
    "switzerland" = "スイス",
    "syria" = "シリア",

    # T
    "tajikistan" = "タジキスタン",
    "tanzania" = "タンザニア",
    "thailand" = "タイ",
    "togo" = "トーゴ",
    "tonga" = "トンガ",
    "trinidad and tobago" = "トリニダード・トバゴ",
    "tunisia" = "チュニジア",
    "turkey" = "トルコ",
    "turkiye" = "トルコ",
    "turkmenistan" = "トルクメニスタン",
    "tuvalu" = "ツバル",
    "taiwan" = "台湾",
    "republic of china" = "台湾",
    "roc" = "台湾",

    # U
    "uganda" = "ウガンダ",
    "ukraine" = "ウクライナ",
    "united arab emirates" = "アラブ首長国連邦",
    "uae" = "アラブ首長国連邦",
    "united kingdom" = "イギリス",
    "uk" = "イギリス",
    "great britain" = "イギリス",
    "united states" = "アメリカ",
    "united states of america" = "アメリカ",
    "usa" = "アメリカ",
    "us" = "アメリカ",
    "uruguay" = "ウルグアイ",
    "uzbekistan" = "ウズベキスタン",

    # V
    "vanuatu" = "バヌアツ",
    "venezuela" = "ベネズエラ",
    "vietnam" = "ベトナム",
    "viet nam" = "ベトナム",
    "vatican" = "バチカン",
    "vatican city" = "バチカン",
    "holy see" = "バチカン",

    # Y
    "yemen" = "イエメン",

    # Z
    "zambia" = "ザンビア",
    "zimbabwe" = "ジンバブエ"
  )

  # 辞書からマッチするものを取得(マッチしない場合はNAになる)
  result <- country_dict[country_lower]

  # ベクトルの名前属性を外して返す
  return(unname(result))
}

実行例

# 単一の変換
convert_country_to_jp("japan")
[1] "日本"
# 大文字・小文字が混ざっていても対応
convert_country_to_jp("United States")
[1] "アメリカ"
# 略称への対応
convert_country_to_jp("UAE")
[1] "アラブ首長国連邦"
# ベクトルを渡して一括変換
convert_country_to_jp(c("japan", "taiwan", "Kosovo", "UK"))
[1] "日本"     "台湾"     "コソボ"   "イギリス"

以上です。