基于多变量的单张R颜色图?
据我所见,传单中的彩色地图通常只描述一个变量(GDP、犯罪统计、温度等),如下所示: 。 有没有办法使地图在传单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
(来源:) 假设我有一个像这样的数据框,我想做一个类似于酒精饮料的地图
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创建一个新的分类列,它是具有最大值的列的名称(如果有并列关系怎么办?)。一旦完成,就可以直接绘制地图了。