2017-08-16 64 views
0

我一直致力于研究小册子RR Leaflet - 将密度更改为我自己的专栏名称

https://rstudio.github.io/leaflet/choropleths.html

上述美国地图包含数据的state.The格式的密度是地球JSON。我想删除密度变量,我想通过我的列名与相应的变量值。 (例如,当您悬停在新墨西哥州时,我得到密度为17.16(density:17.16),而不是我想显示为(mycolumnname:value))。

+1

显示您当前的代码和数据以及您想要替换的数据。我可以帮你找到你需要的地方。 – sconfluentus

+0

https://www.dropbox.com/s/ajwqg82dpyc4enm/Leaflet%20us%20Map.txt?dl=0(其中包含传单地图的R代码) –

+0

https://www.dropbox.com/s/dkjleaq9m7m2jir /my%20file.xlsx?dl=0(这是具有我的列x和y的数据)我想显示x和y值而不是密度值。 –

回答

0

这是处理传单时非常普遍的需求。有几种方法可以做到这一点,但这是我心中最简单的方法: 想要绘制的所有信息都存储在位于states @ data的SpatialPolygonsDataFrame部分,您可以通过查看这个数据帧部分的头:

我在上面的代码中使用原始的SpatialPolygonsDataFrame名称states的状态名称创建了一个数据帧(传统的r数据帧),并创建了my_var

a<-data.frame([email protected]$name) 
a$my_var <- round(runif(52, 15, 185),2) 

这是我的新数据框的前几行,它与您的数据框相似,但数据比其中的密度更小。

head(a) 
     States my_var 
1 Alabama 120.33 
2  Alaska 179.41 
3 Arizona 67.92 
4 Arkansas 30.57 
5 California 72.26 
6 Colorado 56.33 

既然你有这样的数据帧,你可以调用的库maptools,做一个多边形cbind如下:

states2<-spCbind(states,a$my_var) 

现在看看国家2头(你能说出个州和取代原来的状态SpatialPolygonsDataFrame我一直都以比较之前和之后)

head([email protected]) 
    id  name density data.my_var 
0 01 Alabama 94.650  58.01 
1 02  Alaska 1.264  99.01 
2 04 Arizona 57.050  81.05 
3 05 Arkansas 56.430  124.68 
4 06 California 241.700  138.19 
5 08 Colorado 49.330  103.78 

这增加了data.my_var可变进空间数据框架。现在您可以使用查找/替换功能,通过来代替densitydata.my_var的代码中的引用,并使用新的变量。

重要的事情要考虑 你的数据有50个州的名称,空间数据帧52,则需要在失踪状态cBinding之前添加到您的数据帧,它们必须是相同的长度和以相同的顺序。

如果你抓住这样的名字:

a<-data.frame([email protected]$name) 

从美国反对,然后你可以离开了合并各国,与您的数据,它会保持其是空的,其中为了a和所有的细胞新的地区没有你的数据集中的数据将保持空白。使用merge确保数据正确地向上排列。

a<- merge(a, your_data ,by=c("States","name")) 

而且,一旦被合并,并确认了[email protected]$name是相同的顺序a$States,你可以使用任何名字,你想在SpatialPolygonDataFrame作为新标题通过提取数据到一个向量的名称你要结合他们之前:

my_var <- a$my_var 
states2<-spCbind(states, my_var) 

这将留给你一个数据帧,看起来像这样:

id  name density  my_var 
0 01 Alabama 94.650  58.01 
1 02  Alaska 1.264  99.01 

这很容易作为内部传单中没有长字符串的列名来解决。

+0

我们可以在上面添加两列以上的数据,例如,您可以将my_var添加到数据中,我希望使用my_var1的列作为额外的列,因此当您将鼠标悬停在状态上时,它一次显示my_var和my_var 1的值。 –

+0

绝对!您可以创建与每个地理区域关联的许多数据列,并可以在单个地图的不同图层中引用它们,也可以使用一帧来构建多个地图。我为一个工作项目建立了一个系列,其中包含17个独立的地图和复合弹出窗口,其中包含每个地理区域的所有17列的数据,以及每个地图的SVG图形....小册子和SpatialPolygonDataFrames是一个非常多功能组合! – sconfluentus