I've got this data frame:
country_groups <- structure(list(country_name = c("Australia", "Brazil", "Canada",
"China", "China", "China", "China", "China", "China", "China",
"China", "China", "China", "China", "China", "China", "European Patent Office",
"European Patent Office", "Germany", "India", "India", "India",
"India", "India", "India", "Japan", "Japan", "Japan", "Korea [Republic of]",
"Korea [Republic of]", "Korea [Republic of]", "Korea [Republic of]",
"Korea [Republic of]", "Romania", "Russian Federation", "Russian Federation",
"Spain", "Taiwan", "Taiwan", "United Kingdom", "United States",
"United States", "United States", "United States", "United States",
"United States", "United States", "United States", "United States",
"United States", "United States", "United States", "World", "World"
), longitude = c(133.775136, -51.92528, -106.346771, 104.195397,
104.195397, 104.195397, 104.195397, 104.195397, 104.195397, 104.195397,
104.195397, 104.195397, 104.195397, 104.195397, 104.195397, 104.195397,
-20.8685430762787, -20.8685430762787, 10.451526, 78.96288, 78.96288,
78.96288, 78.96288, 78.96288, 78.96288, 138.252924, 138.252924,
138.252924, 127.766922, 127.766922, 127.766922, 127.766922, 127.766922,
24.96676, 105.318756, 105.318756, -3.74922, 120.960515, 120.960515,
-3.435973, -95.712891, -95.712891, -95.712891, -95.712891, -95.712891,
-95.712891, -95.712891, -95.712891, -95.712891, -95.712891, -95.712891,
-95.712891, 71.8853560211639, 71.8853560211639), latitude = c(-25.274398,
-14.235004, 56.130366, 35.86166, 35.86166, 35.86166, 35.86166,
35.86166, 35.86166, 35.86166, 35.86166, 35.86166, 35.86166, 35.86166,
35.86166, 35.86166, 48.2343918029004, 48.2343918029004, 51.165691,
20.593684, 20.593684, 20.593684, 20.593684, 20.593684, 20.593684,
36.204824, 36.204824, 36.204824, 35.907757, 35.907757, 35.907757,
35.907757, 35.907757, 45.943161, 61.52401, 61.52401, 40.463667,
23.69781, 23.69781, 55.378051, 37.09024, 37.09024, 37.09024,
37.09024, 37.09024, 37.09024, 37.09024, 37.09024, 37.09024, 37.09024,
37.09024, 37.09024, -51.681674860461, -51.681674860461), topic = c("Population growth",
"Education", "Arts", "Sports", "Growing plants", "Reading", "Story telling",
"Gymnastics", "Cooking classes", "Education", "Arts", "Arcade",
"Acting", "Population growth", "Movies", "Education", "Sports",
"Arcade", "Movies", "Sports", "Reading", "Gymnastics", "Cooking classes",
"Education", "Population growth", "Sports", "Reading", "Gymnastics",
"Growing plants", "Gymnastics", "Arcade", "Acting", "Movies",
"Gymnastics", "Sports", "Gymnastics", "Arcade", "Gymnastics",
"Arcade", "Gymnastics", "Sports", "Growing plants", "Reading",
"Gymnastics", "Cooking classes", "Education", "Arts", "Arcade",
"Acting", "Population growth", "Movies", "Education", "Arcade",
"Movies"), n = c(2L, 1L, 1L, 34L, 31L, 51L, 82L, 63L, 22L, 17L,
43L, 53L, 34L, 43L, 46L, 22L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 2L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 1L, 1L, 2L, 1L,
4L, 3L, 3L, 23L, 1L, 4L, 2L, 2L, 8L, 2L, 3L, 1L, 1L, 1L)), row.names = c(NA,
-54L), class = "data.frame")
And I wish to perform leaflet mapping with it, in a way that when you click on the corresponding marker, it displays country name, followed by each TOPIC = NUMBER below. I've had such a hard time because everywhere I've seen they mostly use paste0
or paste
and that is able to get the job done. This time each country could have all topics or just one, I've tried to get it done as they do in the official webpage with no luck, It seems simple but I can't get it done, somebody might know how to? Below you can see what coding I use. Thanks in advance!
library(leaflet)
library(dplyr)
# Maping
leaflet(country_groups) %>%
addTiles() %>%
setView( lng = 0, lat = 0, zoom = 1) %>%
addProviderTiles("Esri.WorldTopoMap") %>%
addMarkers(~longitude, ~latitude, popup = ~HTML(paste0("<br>", "Country:", country_name,"<br/>",
country_groups %>%
filter(country_name %in% country_name) %>%
select(topic,n) )))
And this is the kind of pop up I expect (China), but adding the Country name upfront:
country_selec <- country_groups %>% filter(country_name == "China")
country_info <- country_selec[c("topic","n")];names(country_info) <- c("Topic","Count")
This is how it displays with answear provided, it would be perfectly brilliant if it displayed as it does for @Wimpel