Ulgur
Ulgur

Reputation: 75

Leaflet R color map based on multiple variables?

From what I have seen colored maps in leaflet usually only depict one variable(GDP, Crime stats, Temperature etc) like this one:

one. Is there a way to make maps that display the highest variable in a data frame in leaflet R? For example showing which alcoholic beverage is the most popular in a country, like this map?

this
(source: dailymail.co.uk)

Say that I had a data frame that looked like this and I wanted to do a similar map to the alcoholic beverage one...

Country  Beer Wine Spirits Coffee Tea  
Sweden     7   7      5      10    6
USA        9   6      6       7    5
Russia     5   3      9       5    8

Is there a way in leaflet R to pick out the alcoholic beverages, assign them a color and then display them on the map to show which type of alcoholic beverage is the most popular in the three different countries?

Upvotes: 1

Views: 2061

Answers (1)

Spacedman
Spacedman

Reputation: 94182

Step 0, make a test data frame:

> set.seed(1234)
> drinks = data.frame(Country=c("Sweden","USA","Russia"),
     Beer=sample(10,3), Wine=sample(10,3), Spirits=sample(10,3),
     Coffee=sample(10,3), Tea=sample(10,3))

Note I have country as a column - yours might have countries in the row names which means the following code needs changing. Anyway. We get:

> drinks
  Country Beer Wine Spirits Coffee Tea
1  Sweden    2    7       1      6   3
2     USA    6    8       3      7   9
3  Russia    5    6       6      5  10

Now we combine apply to work along rows, which.max to get the highest element, and various subset operations to drop the country column and get the drink name from the column names:

> drinks$Favourite = names(drinks)[-1][apply(drinks[,-1],1,which.max)]
> drinks
  Country Beer Wine Spirits Coffee Tea Favourite
1  Sweden    2    7       1      6   3      Wine
2     USA    6    8       3      7   9       Tea
3  Russia    5    6       6      5  10       Tea

If there's a tie then which.max will pick (I think) the first element. If you want something else then you'll have to rewrite.

Now feed your new data frame to leaflet and map the Favourite column.

Upvotes: 6

Related Questions