基于多个变量的 Leaflet R 颜色图?

Leaflet R color map based on multiple variables?

据我所知,传单中的彩色地图通常只描绘一个变量(GDP、犯罪统计、温度等),如下图:

。 有没有办法制作在传单 R 的数据框中显示最高变量的地图?例如显示哪个国家/地区最受欢迎的酒精饮料,就像这张地图?


(来源:dailymail.co.uk

假设我有一个看起来像这样的数据框,我想制作一张与酒精饮料类似的地图...

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

有没有办法在传单 R 中挑选出酒精饮料,为它们分配颜色,然后将它们显示在地图上以显示哪种类型的酒精饮料在三个不同的国家/地区最受欢迎?

第0步,制作测试数据框:

> 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))

请注意,我将国家/地区列为一列 - 您的行名称中可能包含国家/地区,这意味着以下代码需要更改。反正。我们得到:

> 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

现在我们结合 apply 来处理行,which.max 来获取最高元素,以及各种子集操作来删除国家列并从列名称中获取饮料名称:

> 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

如果出现平局,则 which.max 将选择(我认为)第一个元素。如果你想要其他东西,那么你将不得不重写。

现在将您的新数据框提供给传单并映射 Favourite 列。