これは、リーフレットを扱う際に非常に一般的な必要性です。これを行うにはいくつかの方法がありますが、これは私の心で最も簡単です: プロットしたいすべての情報は、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]$name
がa$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
これは、長い文字列のない内側のリーフレットからの列名として扱いやすくなります。
現在のコードとデータ、および置き換えたいデータを表示します。私はおそらくあなたがどこにいる必要があるかを手伝うことができます。 – sconfluentus
https://www.dropbox.com/s/ajwqg82dpyc4enm/Leaflet%20us%20Map.txt?dl=0(リーフレットマップのRコードが含まれています) –
https://www.dropbox.com/s/dkjleaq9m7m2jir /my%20file.xlsx?dl=0(これは私の列xとyのデータです)密度値の代わりにxとyの値を表示したいと思います。 –