Je suis sur Rstudio et je souhaite ajouter un marqueur basé sur le nom du pays.

La variable qui contient le nombre d'occurrences par pays est cnt_country qui se trouve dans le tableau ci-dessous

Morocco                            57381
France                             35729
Tunisia                            85563
Saudi Arabia                       10816
Turkey                             6725

Cependant, lorsque j'utilise brochure(cnt_country)%>% addTiles()%>% addMarkers(), j'obtiens une erreur : impossible de déduire des informations lat long.

Existe-t-il un moyen pour le dépliant d'ajouter des marqueurs en fonction du nom du pays ?

0
Zine 20 févr. 2020 à 13:01

1 réponse

Meilleure réponse

Pour que leaflet puisse localiser les marqueurs sur la carte, vous devrez fournir des géocoordonnées. Si cela ne vous dérange pas d'épingler les marqueurs à la capitale de chaque pays, vous pouvez obtenir ces coordonnées géographiques à partir du bloc de données world.cities dans le package maps.

library(dplyr)
library(leaflet)
library(maps)

# ingest your data
cnt_country <- read.table(text = "Morocco,57381\nFrance,35729\nTunisia,85563\nSaudi Arabia,10816\nTurkey,6725",
                          sep = ",",
                          header = FALSE,
                          stringsAsFactors = FALSE,
                          col.names = c("country", "n"))

# import the world.cities data frame from 'maps'
data(world.cities)

# merge the desired cols from that data frame with yours by country
df <- world.cities %>%
    filter(capital == 1) %>%
    dplyr::select(country = country.etc, lat, lng = long) %>%
    left_join(cnt_country, ., by = "country")

# now map the result
leaflet(df)%>%
    addTiles()%>%
    addMarkers(label = ~n) 
2
ulfelder 20 févr. 2020 à 11:13