3

R でのデータ処理について質問があります。2 つのデータセットがあります。どちらも元は .csv ファイルです。2 つのサンプル データセットを用意しました。

表 A - 人物
http://pastebin.com/HbaeqACi

表 B - 都市
http://pastebin.com/Fyj66ahq

読み込みと視覚化に対応する R コードの作業をできるだけ少なくするためです。

# Read csv files
# check pastebin links and save content to persons.csv and city.csv.
persons_dataframe = read.csv("persons.csv", header = TRUE)
city_dataframe = read.csv("city.csv", header = TRUE)
# plot them on a map
# load used packages
library(RgoogleMaps)
library(ggplot2)
library(ggmap)
library(sp)

persons_ggplot2 <- persons_dataframe
city_ggplot2 <- city_dataframe
gc <- geocode('new york, usa')
center <- as.numeric(gc)  
G <- ggmap(get_googlemap(center = center, color = 'color', scale = 4, zoom = 10, maptype = "terrain", frame=T), extent="panel")
G1 <- G + geom_point(aes(x=POINT_X, y=POINT_Y ),data=city_dataframe, shape = 22, color="black", fill = "yellow", size = 4) + geom_point(aes(x=POINT_X, y=POINT_Y ),data=persons_dataframe, shape = 8, color="red", size=2.5)
plot(G1)

その結果、すべての都市と人を視覚化する地図ができました。
私の問題:すべての人は、これら 3 つの都市にのみ分散しています。

私の質問:

  1. より一般的な質問: これは R の問題ですか?
  2. ある地点の人数を可視化したバブルマップのようなものを作りたいです。例: A 市には 20 人、B 市には 5 人。都市 A の位置は、都市 B よりも大きなバブルになるはずです。
  3. 特定の位置にいる人数を示すラベルを作成したいと考えています。私はすでにggplo2geom_textオプションでこれを実現しようとしましたが、特定の位置ですべてのポイントを合計してラベルに書き込む方法がわかりません。
  4. より理論的なアプローチ (後でこれに戻るかもしれません): 人口が最も多い地域を示す密度マップ/クラスター マップのようなものを作成したいと考えています。使用できるいくつかのパッケージを既に検索しています。提案されたものは、SpatialEpi、spatstat、および DCluster でした。私の質問: クラスター分析を実行するには、人から特定のオブジェクト (スーパーマーケットなど) までの距離が必要ですか?

うまくいけば、これらはあまり多くの質問ではありませんでした.
どんな助けでも大歓迎です。前もって感謝します!

ところで: サンプル データセットを含む質問を準備するためのより良いヘルプはありますか? ファイルをどこかにアップロードする必要がありますか、それともペーストビンの方法で問題ありませんか?

4

1 に答える 1

2

各都市の数をカウントし、ポイントのサイズをカウントにマッピングすることで、バブル チャートを作成できます。

library(plyr)
persons_count <- count(persons_dataframe, vars = c("city", "POINT_X", "POINT_Y"))

G + geom_point(aes(x=POINT_X, y=POINT_Y, size=freq),data=persons_count, color="red")

カウントをポイントの領域にマッピングすると、相対的なサイズをよりよく理解できる可能性があります。

G + geom_point(aes(x=POINT_X, y=POINT_Y, size=freq),data=persons_count, color="red") +
    scale_size_area(breaks = unique(persons_count$freq))

度数ラベルを追加できますが、これはサイズ スケールの凡例と多少冗長です。

G + geom_point(aes(x=POINT_X, y=POINT_Y, size=freq),data=persons_count, color="red") +
    geom_text(aes(x = POINT_X, y=POINT_Y, label = freq), data=persons_count) +
    scale_size_area(breaks = unique(persons_count$freq))

点が 3 つしかないため、例のデータで実際に密度をプロットすることはできません。しかし、より詳細な位置情報があればstat_density2d、ggplot2 の関数を使用して密度を計算してプロットできます。

于 2014-03-01T15:08:57.147 に答える