基于多变量的单张R颜色图?

基于多变量的单张R颜色图?,r,leaflet,R,Leaflet,据我所见,传单中的彩色地图通常只描述一个变量(GDP、犯罪统计、温度等),如下所示: 。 有没有办法使地图在传单R的数据框中显示最高的变量?例如,显示哪个酒精饮料在一个国家最受欢迎,如这张地图 (来源:) 假设我有一个像这样的数据框,我想做一个类似于酒精饮料的地图 Country Beer Wine Spirits Coffee Tea Sweden 7 7 5 10 6 USA 9 6 6 7 5 Ru

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

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


(来源:)

假设我有一个像这样的数据框,我想做一个类似于酒精饮料的地图

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))
请注意,我将country列为一列-您的行名称中可能有国家,这意味着以下代码需要更改。无论如何我们得到:

> 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
如果出现平局,那么
哪个.max
将选择(我认为)第一个元素。如果你想要别的东西,你就得重写


现在将新的数据框输入传单,并映射到
收藏
列。

步骤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))
请注意,我将country列为一列-您的行名称中可能有国家,这意味着以下代码需要更改。无论如何我们得到:

> 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
如果出现平局,那么
哪个.max
将选择(我认为)第一个元素。如果你想要别的东西,你就得重写


现在,将新的数据框输入传单,并映射
最喜爱的
列。

您可以共享数据集(使用dput())并编写代码,以便我们为您提供帮助吗?传单中不需要这样做,您可以在R中这样做。只需使用R创建一个新的分类列,该列是具有最大值的列的名称(如果出现平局怎么办?)。一旦完成,映射就很简单了。您可以共享您的数据集(使用dput())并编写代码,以便我们为您提供帮助吗?您不需要在传单中这样做,而是在R中这样做。只需使用R创建一个新的分类列,它是具有最大值的列的名称(如果有并列关系怎么办?)。一旦完成,就可以直接绘制地图了。