2017-08-16 7 views
0

Rでリーフレットに取り組んでいます。上記の私たち-地図データのstate.Theフォーマットの密度が含まれていますザ・Rリーフレット - 密度を自分自身のカラム名に変更

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

はジオJSONです。私は密度変数を削除したいと私は対応する変数の値で私のcolumnnameを渡したいと思います。 (たとえば、ニューメキシコ州を移動すると密度が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という名前のステート名を使用してデータフレーム(従来の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) 

は今、あなたは状態に名前を付けることができた(states2の頭を見て、

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 

)元の状態にSpatialPolygonsDataFrameを置き換える私は前と後を比較することの両方を保持これはにdata.my_var変数を追加しました空間データフレーム。今度は、検索/置換を使用してに行き、densityと言うコードの参照をdata.my_varと置き換え、新しい変数が使用されます。 あなたのデータを検討する

重要なものは、50の状態名を持つ、空間データフレームは52を持っている、あなたがそれらをcBindingする前に、データフレームに不足している状態で追加する必要があります、彼らは同じ長さでなければならず、同じ順序で。あなたはこのような名前つかむ場合

は:州から

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

オブジェクトを、あなたは、あなたのデータで、アメリカにマージ左ことができますし、それがどこ空になっているためa、すべての細胞を維持します新しい領域はデータセット内のデータを持たず、空のままになります。

mergeを使用すると、データが正しく整列されます。それらがマージされ、あなたが[email protected]$namea$Statesと同じ順序であることを確認した後

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

また、あなたは名前でベクターにデータを抽出することによって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

私は上記に2つ以上の列を追加することができます。例えば、データにmy_varを追加したいのですが、追加の列としてmy_var1を持つ列を追加したいので、一度に1つずつmy_varとmy_varの値を表示する。 –

+0

絶対に!各地理に関連付けられた多数のデータ列を作成し、それらを単一のマップの異なるレイヤーで参照するか、または1つのフレームを使用して複数のマップを構築することができます。私は17個の別々のマップと複合ポップアップを持つ作業プロジェクトのシリーズを構築しました。それらの中には、それぞれの地理の17個の列すべてのデータと、その中の各マップのSVGグラフがあります。リーフレットと 'SpatialPolygonDataFrames'は非常に多彩な組み合わせ! – sconfluentus

関連する問題