Displaying Geogrpahic Data

Run the Libraries

devtools::install_github("hrbrmstr/taucharts")
## Skipping install of 'taucharts' from a github remote, the SHA1 (93dbdce5) has not changed since last install.
##   Use `force = TRUE` to force installation
library(taucharts)
library(dplyr)
## 
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
library(rgdal)
## Loading required package: sp
## rgdal: version: 1.4-8, (SVN revision 845)
##  Geospatial Data Abstraction Library extensions to R successfully loaded
##  Loaded GDAL runtime: GDAL 2.4.2, released 2019/06/28
##  Path to GDAL shared files: /Library/Frameworks/R.framework/Versions/3.6/Resources/library/rgdal/gdal
##  GDAL binary built with GEOS: FALSE 
##  Loaded PROJ.4 runtime: Rel. 5.2.0, September 15th, 2018, [PJ_VERSION: 520]
##  Path to PROJ.4 shared files: /Library/Frameworks/R.framework/Versions/3.6/Resources/library/rgdal/proj
##  Linking to sp version: 1.3-2
library(countrycode)
library(ggmap)
## Loading required package: ggplot2
## Google's Terms of Service: https://cloud.google.com/maps-platform/terms/.
## Please cite ggmap if you use it! See citation("ggmap") for details.
library(readxl)
library(leaflet)
library(DT)
library(sp)

Reading the File

cities<-read_excel("OAP_database.xls", sheet = 4)
## New names:
## * `` -> ...2
## * `` -> ...3
## * `` -> ...4
## * `` -> ...5
## * `` -> ...6
## * … and 2 more problems

Cleaning the File

cities<-cities[-c(1:2),]
cities <-cities[,c(3,2,4)]

Renaming the columns & Visualizing Structure

names(cities)<-c("City","Country","PMLevel")
str(cities)
## Classes 'tbl_df', 'tbl' and 'data.frame':    1099 obs. of  3 variables:
##  $ City   : chr  "Alger" "Buenos Aires" "Adelaide" "Brisbane" ...
##  $ Country: chr  "Algeria" "Argentina" "Australia" "Australia" ...
##  $ PMLevel: chr  "42" "38" "13.5" "18.166666666666668" ...

Question 1: An interactive table of the top 100 cities in the world with the city with the highest PM 10 levels on top.

Creating the Interactive Table

cities$PMLevel<-as.numeric(cities$PMLevel)
str(cities)
## Classes 'tbl_df', 'tbl' and 'data.frame':    1099 obs. of  3 variables:
##  $ City   : chr  "Alger" "Buenos Aires" "Adelaide" "Brisbane" ...
##  $ Country: chr  "Algeria" "Argentina" "Australia" "Australia" ...
##  $ PMLevel: num  42 38 13.5 18.2 13.8 ...
cities$PMLevel<-round(cities$PMLevel,2)
cities %>% arrange(-PMLevel)%>%top_n(100)%>% datatable(rownames=FALSE)
## Selecting by PMLevel

Question 2: An interactive bar chart that shows the countries and the number of top 100 cities that are present in each country. The country with the highest number of cities should appear first.

Rearranging the levels to show number of top 100 cities by country

tmp<-cities%>%arrange(-PMLevel)%>%top_n(100)%>%
  group_by(Country)%>%summarise(number_of_cities=length(Country))
## Selecting by PMLevel
tmp<-tmp%>%arrange(-number_of_cities)

Creating the interactive bar chart

tmp$Country<-forcats::fct_inorder(tmp$Country)
tauchart(tmp)%>%tau_bar("number_of_cities","Country",horizontal = "TRUE")%>% tau_legend()%>% tau_tooltip()
## Neither color nor size aesthetics have been mapped. Legend plugin will be active but not displayed.

Question 3: Plot the top 100 cities in a static world map. (Size the points as a function of the amount of PM 10 present in each city.)

cities100<-cities%>%arrange(-PMLevel)%>%top_n(100)
## Selecting by PMLevel

Reading API code & Keeping permanently in R

 ggmap::register_google(key = "AIzaSyCbTc_Ek6q-NxUjAxE3PtwxbyUJx6vAQqY", write = TRUE)
## Replacing old key (AIzaSyCbTc_Ek6q) with new key in /Users/bryceparsons/.Renviron

Collecting location data from google

cities100$CityCountry<-paste(cities100$City,cities100$Country,sep=", ")  

locs<-geocode(cities100$CityCountry) 
## Source : https://maps.googleapis.com/maps/api/geocode/json?address=Ahwaz,+Iran+(Islamic+Republic+of)&key=xxx-NxUjAxE3PtwxbyUJx6vAQqY
## Source : https://maps.googleapis.com/maps/api/geocode/json?address=Ulaanbaatar,+Mongolia&key=xxx-NxUjAxE3PtwxbyUJx6vAQqY
## Source : https://maps.googleapis.com/maps/api/geocode/json?address=Sanandaj,+Iran+(Islamic+Republic+of)&key=xxx-NxUjAxE3PtwxbyUJx6vAQqY
## Source : https://maps.googleapis.com/maps/api/geocode/json?address=Ludhiana,+India&key=xxx-NxUjAxE3PtwxbyUJx6vAQqY
## Source : https://maps.googleapis.com/maps/api/geocode/json?address=Quetta,+Pakistan&key=xxx-NxUjAxE3PtwxbyUJx6vAQqY
## Source : https://maps.googleapis.com/maps/api/geocode/json?address=Kermanshah,+Iran+(Islamic+Republic+of)&key=xxx-NxUjAxE3PtwxbyUJx6vAQqY
## Source : https://maps.googleapis.com/maps/api/geocode/json?address=Peshawar,+Pakistan&key=xxx-NxUjAxE3PtwxbyUJx6vAQqY
## Source : https://maps.googleapis.com/maps/api/geocode/json?address=Gaborone,+Botswana&key=xxx-NxUjAxE3PtwxbyUJx6vAQqY
## Source : https://maps.googleapis.com/maps/api/geocode/json?address=Yasouj,+Iran+(Islamic+Republic+of)&key=xxx-NxUjAxE3PtwxbyUJx6vAQqY
## Source : https://maps.googleapis.com/maps/api/geocode/json?address=Kanpur,+India&key=xxx-NxUjAxE3PtwxbyUJx6vAQqY
## Source : https://maps.googleapis.com/maps/api/geocode/json?address=Lahore,+Pakistan&key=xxx-NxUjAxE3PtwxbyUJx6vAQqY
## Source : https://maps.googleapis.com/maps/api/geocode/json?address=Delhi,+India&key=xxx-NxUjAxE3PtwxbyUJx6vAQqY
## Source : https://maps.googleapis.com/maps/api/geocode/json?address=Karachi,+Pakistan&key=xxx-NxUjAxE3PtwxbyUJx6vAQqY
## Source : https://maps.googleapis.com/maps/api/geocode/json?address=Islamabad,+Pakistan&key=xxx-NxUjAxE3PtwxbyUJx6vAQqY
## Source : https://maps.googleapis.com/maps/api/geocode/json?address=Lucknow,+India&key=xxx-NxUjAxE3PtwxbyUJx6vAQqY
## Source : https://maps.googleapis.com/maps/api/geocode/json?address=Rawalpindi,+Pakistan&key=xxx-NxUjAxE3PtwxbyUJx6vAQqY
## Source : https://maps.googleapis.com/maps/api/geocode/json?address=Uromiyeh,+Iran+(Islamic+Republic+of)&key=xxx-NxUjAxE3PtwxbyUJx6vAQqY
## Source : https://maps.googleapis.com/maps/api/geocode/json?address=Qom,+Iran+(Islamic+Republic+of)&key=xxx-NxUjAxE3PtwxbyUJx6vAQqY
## Source : https://maps.googleapis.com/maps/api/geocode/json?address=Indore,+India&key=xxx-NxUjAxE3PtwxbyUJx6vAQqY
## Source : https://maps.googleapis.com/maps/api/geocode/json?address=khoramabad,+Iran+(Islamic+Republic+of)&key=xxx-NxUjAxE3PtwxbyUJx6vAQqY
## Source : https://maps.googleapis.com/maps/api/geocode/json?address=Agra,+India&key=xxx-NxUjAxE3PtwxbyUJx6vAQqY
## Source : https://maps.googleapis.com/maps/api/geocode/json?address=Al+Ain,+United+Arab+Emirates&key=xxx-NxUjAxE3PtwxbyUJx6vAQqY
## Source : https://maps.googleapis.com/maps/api/geocode/json?address=Riyadh,+Saudi+Arabia&key=xxx-NxUjAxE3PtwxbyUJx6vAQqY
## Source : https://maps.googleapis.com/maps/api/geocode/json?address=Al-Hafouf,+Saudi+Arabia&key=xxx-NxUjAxE3PtwxbyUJx6vAQqY
## Source : https://maps.googleapis.com/maps/api/geocode/json?address=Lanzhou,+China&key=xxx-NxUjAxE3PtwxbyUJx6vAQqY
## Source : https://maps.googleapis.com/maps/api/geocode/json?address=Kolkata,+India&key=xxx-NxUjAxE3PtwxbyUJx6vAQqY
## Source : https://maps.googleapis.com/maps/api/geocode/json?address=Van,+Turkey&key=xxx-NxUjAxE3PtwxbyUJx6vAQqY
## Source : https://maps.googleapis.com/maps/api/geocode/json?address=Dakar,+Senegal&key=xxx-NxUjAxE3PtwxbyUJx6vAQqY
## Source : https://maps.googleapis.com/maps/api/geocode/json?address=Makkah,+Saudi+Arabia&key=xxx-NxUjAxE3PtwxbyUJx6vAQqY
## Source : https://maps.googleapis.com/maps/api/geocode/json?address=Xining,+China&key=xxx-NxUjAxE3PtwxbyUJx6vAQqY
## Source : https://maps.googleapis.com/maps/api/geocode/json?address=Urumqi,+China&key=xxx-NxUjAxE3PtwxbyUJx6vAQqY
## Source : https://maps.googleapis.com/maps/api/geocode/json?address=Faridabad,+India&key=xxx-NxUjAxE3PtwxbyUJx6vAQqY
## Source : https://maps.googleapis.com/maps/api/geocode/json?address=Greater+Cairo,+Egypt&key=xxx-NxUjAxE3PtwxbyUJx6vAQqY
## "Greater Cairo, Egypt" not uniquely geocoded, using "17 mohammed mazhar, zamalek, giza governorate, egypt"
## Source : https://maps.googleapis.com/maps/api/geocode/json?address=Mexicali,+Mexico&key=xxx-NxUjAxE3PtwxbyUJx6vAQqY
## Source : https://maps.googleapis.com/maps/api/geocode/json?address=Jabalpur,+India&key=xxx-NxUjAxE3PtwxbyUJx6vAQqY
## Source : https://maps.googleapis.com/maps/api/geocode/json?address=Dhaka,+Bangladesh&key=xxx-NxUjAxE3PtwxbyUJx6vAQqY
## Source : https://maps.googleapis.com/maps/api/geocode/json?address=Mumbai,+India&key=xxx-NxUjAxE3PtwxbyUJx6vAQqY
## Source : https://maps.googleapis.com/maps/api/geocode/json?address=Dhanbad,+India&key=xxx-NxUjAxE3PtwxbyUJx6vAQqY
## Source : https://maps.googleapis.com/maps/api/geocode/json?address=Ilam,+Iran+(Islamic+Republic+of)&key=xxx-NxUjAxE3PtwxbyUJx6vAQqY
## Source : https://maps.googleapis.com/maps/api/geocode/json?address=Jeddah,+Saudi+Arabia&key=xxx-NxUjAxE3PtwxbyUJx6vAQqY
## Source : https://maps.googleapis.com/maps/api/geocode/json?address=Allahabad,+India&key=xxx-NxUjAxE3PtwxbyUJx6vAQqY
## Source : https://maps.googleapis.com/maps/api/geocode/json?address=Bushehr,+Iran+(Islamic+Republic+of)&key=xxx-NxUjAxE3PtwxbyUJx6vAQqY
## Source : https://maps.googleapis.com/maps/api/geocode/json?address=Kerman,+Iran+(Islamic+Republic+of)&key=xxx-NxUjAxE3PtwxbyUJx6vAQqY
## Source : https://maps.googleapis.com/maps/api/geocode/json?address=Jinan,+China&key=xxx-NxUjAxE3PtwxbyUJx6vAQqY
## Source : https://maps.googleapis.com/maps/api/geocode/json?address=Kuwait+City,+Kuwait&key=xxx-NxUjAxE3PtwxbyUJx6vAQqY
## Source : https://maps.googleapis.com/maps/api/geocode/json?address=Lagos,+Nigeria&key=xxx-NxUjAxE3PtwxbyUJx6vAQqY
## Source : https://maps.googleapis.com/maps/api/geocode/json?address=Beijing,+China&key=xxx-NxUjAxE3PtwxbyUJx6vAQqY
## Source : https://maps.googleapis.com/maps/api/geocode/json?address=Dammam,+Saudi+Arabia&key=xxx-NxUjAxE3PtwxbyUJx6vAQqY
## Source : https://maps.googleapis.com/maps/api/geocode/json?address=Patna,+India&key=xxx-NxUjAxE3PtwxbyUJx6vAQqY
## Source : https://maps.googleapis.com/maps/api/geocode/json?address=Sarajevo,+Bosnia+and+Herzegovina&key=xxx-NxUjAxE3PtwxbyUJx6vAQqY
## Source : https://maps.googleapis.com/maps/api/geocode/json?address=Abu+Dhabi,+United+Arab+Emirates&key=xxx-NxUjAxE3PtwxbyUJx6vAQqY
## Source : https://maps.googleapis.com/maps/api/geocode/json?address=Meerut,+India&key=xxx-NxUjAxE3PtwxbyUJx6vAQqY
## Source : https://maps.googleapis.com/maps/api/geocode/json?address=Xi'an,+China&key=xxx-NxUjAxE3PtwxbyUJx6vAQqY
## Source : https://maps.googleapis.com/maps/api/geocode/json?address=Jaipur,+India&key=xxx-NxUjAxE3PtwxbyUJx6vAQqY
## Source : https://maps.googleapis.com/maps/api/geocode/json?address=Qazvin,+Iran+(Islamic+Republic+of)&key=xxx-NxUjAxE3PtwxbyUJx6vAQqY
## Source : https://maps.googleapis.com/maps/api/geocode/json?address=Medan,+Indonesia&key=xxx-NxUjAxE3PtwxbyUJx6vAQqY
## Source : https://maps.googleapis.com/maps/api/geocode/json?address=Chengdu,+China&key=xxx-NxUjAxE3PtwxbyUJx6vAQqY
## Source : https://maps.googleapis.com/maps/api/geocode/json?address=Hefei,+China&key=xxx-NxUjAxE3PtwxbyUJx6vAQqY
## Source : https://maps.googleapis.com/maps/api/geocode/json?address=Shenyang,+China&key=xxx-NxUjAxE3PtwxbyUJx6vAQqY
## Source : https://maps.googleapis.com/maps/api/geocode/json?address=Yanbu,+Saudi+Arabia&key=xxx-NxUjAxE3PtwxbyUJx6vAQqY
## Source : https://maps.googleapis.com/maps/api/geocode/json?address=Kathmandu+Valley,+Nepal&key=xxx-NxUjAxE3PtwxbyUJx6vAQqY
## Source : https://maps.googleapis.com/maps/api/geocode/json?address=Taiyuan,+China&key=xxx-NxUjAxE3PtwxbyUJx6vAQqY
## Source : https://maps.googleapis.com/maps/api/geocode/json?address=Varanasi,+India&key=xxx-NxUjAxE3PtwxbyUJx6vAQqY
## Source : https://maps.googleapis.com/maps/api/geocode/json?address=Chongqing,+China&key=xxx-NxUjAxE3PtwxbyUJx6vAQqY
## Source : https://maps.googleapis.com/maps/api/geocode/json?address=Wuhan,+China&key=xxx-NxUjAxE3PtwxbyUJx6vAQqY
## Source : https://maps.googleapis.com/maps/api/geocode/json?address=Esfahan,+Iran+(Islamic+Republic+of)&key=xxx-NxUjAxE3PtwxbyUJx6vAQqY
## Source : https://maps.googleapis.com/maps/api/geocode/json?address=Shijiazhuang,+China&key=xxx-NxUjAxE3PtwxbyUJx6vAQqY
## Source : https://maps.googleapis.com/maps/api/geocode/json?address=Konya,+Turkey&key=xxx-NxUjAxE3PtwxbyUJx6vAQqY
## Source : https://maps.googleapis.com/maps/api/geocode/json?address=Kars,+Turkey&key=xxx-NxUjAxE3PtwxbyUJx6vAQqY
## Source : https://maps.googleapis.com/maps/api/geocode/json?address=Hamedan,+Iran+(Islamic+Republic+of)&key=xxx-NxUjAxE3PtwxbyUJx6vAQqY
## Source : https://maps.googleapis.com/maps/api/geocode/json?address=Arak,+Iran+(Islamic+Republic+of)&key=xxx-NxUjAxE3PtwxbyUJx6vAQqY
## Source : https://maps.googleapis.com/maps/api/geocode/json?address=Harbin,+China&key=xxx-NxUjAxE3PtwxbyUJx6vAQqY
## Source : https://maps.googleapis.com/maps/api/geocode/json?address=Tianjin,+China&key=xxx-NxUjAxE3PtwxbyUJx6vAQqY
## Source : https://maps.googleapis.com/maps/api/geocode/json?address=Nanjing,+China&key=xxx-NxUjAxE3PtwxbyUJx6vAQqY
## Source : https://maps.googleapis.com/maps/api/geocode/json?address=Denizli,+Turkey&key=xxx-NxUjAxE3PtwxbyUJx6vAQqY
## Source : https://maps.googleapis.com/maps/api/geocode/json?address=Zhengzhou,+China&key=xxx-NxUjAxE3PtwxbyUJx6vAQqY
## Source : https://maps.googleapis.com/maps/api/geocode/json?address=Pune,+India&key=xxx-NxUjAxE3PtwxbyUJx6vAQqY
## Source : https://maps.googleapis.com/maps/api/geocode/json?address=Hatay,+Turkey&key=xxx-NxUjAxE3PtwxbyUJx6vAQqY
## Source : https://maps.googleapis.com/maps/api/geocode/json?address=Nagpur,+India&key=xxx-NxUjAxE3PtwxbyUJx6vAQqY
## Source : https://maps.googleapis.com/maps/api/geocode/json?address=Accra,+Ghana&key=xxx-NxUjAxE3PtwxbyUJx6vAQqY
## Source : https://maps.googleapis.com/maps/api/geocode/json?address=Hangzhou,+China&key=xxx-NxUjAxE3PtwxbyUJx6vAQqY
## Source : https://maps.googleapis.com/maps/api/geocode/json?address=Tehran,+Iran+(Islamic+Republic+of)&key=xxx-NxUjAxE3PtwxbyUJx6vAQqY
## Source : https://maps.googleapis.com/maps/api/geocode/json?address=Yangon,+Myanmar&key=xxx-NxUjAxE3PtwxbyUJx6vAQqY
## Source : https://maps.googleapis.com/maps/api/geocode/json?address=Erzurum,+Turkey&key=xxx-NxUjAxE3PtwxbyUJx6vAQqY
## Source : https://maps.googleapis.com/maps/api/geocode/json?address=Bhopal,+India&key=xxx-NxUjAxE3PtwxbyUJx6vAQqY
## Source : https://maps.googleapis.com/maps/api/geocode/json?address=Changsha,+China&key=xxx-NxUjAxE3PtwxbyUJx6vAQqY
## Source : https://maps.googleapis.com/maps/api/geocode/json?address=Vijayawada,+India&key=xxx-NxUjAxE3PtwxbyUJx6vAQqY
## Source : https://maps.googleapis.com/maps/api/geocode/json?address=Tecate,+Mexico&key=xxx-NxUjAxE3PtwxbyUJx6vAQqY
## Source : https://maps.googleapis.com/maps/api/geocode/json?address=Yinchuan,+China&key=xxx-NxUjAxE3PtwxbyUJx6vAQqY
## Source : https://maps.googleapis.com/maps/api/geocode/json?address=Bangalore,+India&key=xxx-NxUjAxE3PtwxbyUJx6vAQqY
## Source : https://maps.googleapis.com/maps/api/geocode/json?address=Rajkot,+India&key=xxx-NxUjAxE3PtwxbyUJx6vAQqY
## Source : https://maps.googleapis.com/maps/api/geocode/json?address=Mandalay,+Myanmar&key=xxx-NxUjAxE3PtwxbyUJx6vAQqY
## Source : https://maps.googleapis.com/maps/api/geocode/json?address=Hyderabad,+India&key=xxx-NxUjAxE3PtwxbyUJx6vAQqY
## Source : https://maps.googleapis.com/maps/api/geocode/json?address=Visakhapatnam,+India&key=xxx-NxUjAxE3PtwxbyUJx6vAQqY
## Source : https://maps.googleapis.com/maps/api/geocode/json?address=Mashhad,+Iran+(Islamic+Republic+of)&key=xxx-NxUjAxE3PtwxbyUJx6vAQqY
## Source : https://maps.googleapis.com/maps/api/geocode/json?address=Sfax,+Tunisia&key=xxx-NxUjAxE3PtwxbyUJx6vAQqY
## Source : https://maps.googleapis.com/maps/api/geocode/json?address=Tunis,+Tunisia&key=xxx-NxUjAxE3PtwxbyUJx6vAQqY
## Source : https://maps.googleapis.com/maps/api/geocode/json?address=Bizerte,+Tunisia&key=xxx-NxUjAxE3PtwxbyUJx6vAQqY
## Source : https://maps.googleapis.com/maps/api/geocode/json?address=Changchun,+China&key=xxx-NxUjAxE3PtwxbyUJx6vAQqY
## Source : https://maps.googleapis.com/maps/api/geocode/json?address=Balikesir,+Turkey&key=xxx-NxUjAxE3PtwxbyUJx6vAQqY
cities100$lat<-locs$lat
cities100$lon<-locs$lon

## Using ggplot2

worldmap <- borders("world", fill="light grey", colour = "white") # create a layer of borders
worldmap <- ggplot() +   worldmap

#Now Layer the cities on top
worldmap <- worldmap + geom_point(data=cities100,aes(x=lon, y=lat,size=PMLevel),alpha=.4,color="red") 
worldmap + theme_void()

Question 4: Plot the top 100 cities in an interactive world map that shows a popup when a city is clicked. The popup should show information on the name of the city, the country of the city, and the annual mean PM 10 level in each city.

Creating interactive version of the graph

cities100$popup<-paste("<table><tr><td>City:", cities100$City,"<br>Country:",cities100$Country, "<br>Annual Mean PM10 Level:", cities100$PMLevel,"</td></tr></table>")


leaflet(cities100)%>%#addTiles()%>%
  addProviderTiles("CartoDB.Positron") %>%
     setView(0, 0, zoom = 2) %>%
  addCircles(stroke=FALSE, fillOpacity = .5, color="red", radius=~PMLevel*1000,popup=~popup)
## Assuming "lon" and "lat" are longitude and latitude, respectively

Question 5: Using the data for different countries from sheet 5, create an interactive choropleth of the world which colors different countries based on the PM 10 levels. Yet again, the popup when a country is clicked should provide information on the name of the country and the PM10 levels.

Reading sheet number five of the data set

countries<-read_excel("OAP_database.xls", sheet = 5)
## New names:
## * `` -> ...2
## * `` -> ...3
## * `` -> ...4
## * `` -> ...5
## * `` -> ...6
## * … and 13 more problems

Cleaning + Renaming the Columns

countries<-countries[-c(1:2),c(2:3)]

names(countries)<-c("Country","PMLevel")
str(countries)
## Classes 'tbl_df', 'tbl' and 'data.frame':    91 obs. of  2 variables:
##  $ Country: chr  "Estonia" "Mauritius" "Australia" "New Zealand" ...
##  $ PMLevel: chr  "11.132999999999999" "11.65" "13.179790073011779" "15" ...

Calculating & Viewing the 6 countries with the lowest PM levels

countries$PMLevel<-round(as.numeric(countries$PMLevel),2)

head(countries)
## # A tibble: 6 x 2
##   Country     PMLevel
##   <chr>         <dbl>
## 1 Estonia        11.1
## 2 Mauritius      11.6
## 3 Australia      13.2
## 4 New Zealand    15  
## 5 Ireland        15.2
## 6 Luxembourg     17.5

Creating an interactive graph

countries$iso3c=countrycode(countries$Country,"country.name","iso3c")
countries$iso3c<-as.factor(countries$iso3c)


url <- "http://www.naturalearthdata.com/http//www.naturalearthdata.com/download/50m/cultural/ne_50m_admin_0_countries.zip"
folder <- getwd() 
file <- basename(url) 
 download.file(url, file)
 unzip(file, exdir = folder)
#And read it with rgdal library
world <- readOGR(dsn = folder, 
                 layer = "ne_50m_admin_0_countries",
                 encoding = "UTF-8",
                 verbose = FALSE)
##############

world <- sp::merge(world, countries,
               by.x = "ISO_A3",
               by.y = "iso3c",
               sort = FALSE,duplicateGeoms=TRUE)

pal <- colorNumeric(
  palette = "Reds", 
  domain = countries$PMLevel
  )

world_popup <- paste(world$ADMIN, ", PM10 Level:", world$PMLevel,sep = "")

#map:
leaflet(data = world) %>% 
  addTiles() %>%
  setView(0, 0, zoom = 2) %>%
  addPolygons(fillColor = ~pal(world$PMLevel), 
              fillOpacity = 1, 
              color = "#000000", 
              weight = 1, 
              label=~world_popup)%>%  addLegend("bottomright", pal = pal, values = ~PMLevel,title = "Amount of PM10 level",opacity = 1)