Home > OS >  Change country names according to a table
Change country names according to a table

Time:08-03

I have a data set that contains a column with country names, it looks like this:

> xx
# A tibble: 139 × 5
   Country           `2012_value` `2013_value` `2014_value` `2015_value`
   <chr>                    <dbl>        <dbl>        <dbl>        <dbl>
 1 Albania                     NA           NA           NA         35  
 2 Algeria                      1            1            1         NA  
 3 Andorra                     NA           NA           NA         50  
 4 Antigua & Barbuda           NA           NA           NA         98  
 5 Argentina                   NA           NA           NA         65  
 6 Armenia                     NA           44           46         46.5
 7 Ascension                   NA           NA           NA        100  
 8 Austria                     NA           NA           NA         98  
 9 Azerbaijan                  NA           NA           49         50  
10 Bahamas                     NA           NA           NA         95  

I would like to change the names of the countries according to a table I have:

> print(itu_emi_countries, n = 30)
# A tibble: 215 × 2
   `ITU Name`             `EMI Name`        
   <chr>                  <chr>             
 1 Afghanistan            Afghanistan       
 2 Albania                Albania           
 3 Algeria                Algeria           
 4 American Samoa         American Samoa    
 5 Andorra                Andorra           
 6 Angola                 Angola            
 7 Antigua & Barbuda      Antigua           
 8 Argentina              Argentina         
 9 Armenia                Armenia           
10 Aruba                  Aruba             
11 Australia              Australia         
12 Austria                Austria           
13 Azerbaijan             Azerbaijan        
14 Bahamas                Bahamas           
15 Bahrain                Bahrain           
16 Bangladesh             Bangladesh        
17 Barbados               Barbados          
18 Belarus                Belarus           
19 Belgium                Belgium           
20 Belize                 Belize            
21 Benin                  Benin             
22 Bermuda                Bermuda           
23 Bhutan                 Bhutan            
24 Bolivia                Bolivia           
25 Bosnia and Herzegovina Bosnia-Herzegovina
26 Botswana               Botswana          
27 Brazil                 Brazil            
28 Brunei Darussalam      Brunei            
29 Bulgaria               Bulgaria          
30 Burkina Faso           Burkina Faso      
# … with 185 more rows

The country names are written as in the first column, and I want to change them to the second column. How can I do this?

CodePudding user response:

A simple rename and left_join does the trick:

library(tidyverse)

itu_emi_countries <- itu_emi_countries %>%
  rename(Country = `ITU Name`)

left_join(xx, itu_emi_countries, by = "Country")

CodePudding user response:

With dplyr, you could use recode() and pass a named vector indicating the relations between the old and new names.

library(dplyr)

xx %>%
  mutate(Country = recode(Country, !!!tibble::deframe(itu_emi_countries)))
  • Related