この質問は、Stata からのフォローアップの質問です: replace, if, forvalues。次のデータを検討してください。
set seed 123456
set obs 5000
g firmid = "firm" + string(_n) /* Observation (firm) id */
g nw = floor(100*runiform()) /* Number of workers in a firm */
g double lat = 39+runiform() /* Latitude in decimal degree of a firm */
g double lon = -76+runiform() /* Longitude in decimal degree of a firm */
最初の 10 個の観測値は次のとおりです。
+--------------------------------------+
| firmid nw lat lon |
|--------------------------------------|
1. | firm1 81 39.915526 -75.505018 |
2. | firm2 35 39.548523 -75.201567 |
3. | firm3 10 39.657866 -75.17988 |
4. | firm4 83 39.957938 -75.898837 |
5. | firm5 56 39.575881 -75.169157 |
6. | firm6 73 39.886184 -75.857255 |
7. | firm7 27 39.33288 -75.724665 |
8. | firm8 75 39.165549 -75.96502 |
9. | firm9 64 39.688819 -75.232764 |
10. | firm10 76 39.012228 -75.166272 |
+--------------------------------------+
会社 1 と他のすべての会社の間の距離を計算する必要があります。したがって、vincentyコマンドは次のようになります。
. scalar theLat = 39.915526
. scalar theLon = -75.505018
. vincenty lat lon theLat theLon, hav(distance_km) inkm
vincenty コマンドは、各観測値と企業 1 の間の距離を持つdistance_km変数を作成します。ここでは、39.915526 と -75.505018 の 2 つの数値を手動でコピーして貼り付けます。
質問 1 : これらの数値を抽出する構文は何ですか?
これで、distances_km <= 2 の観測を維持できます。そして、
. egen near_nw_sum = sum(nw)
会社 1 から 2 km 以内にあるワーカーの合計を作成します (または、collapseコマンドで実行できます)。
質問 2 : すべての企業に対してこれを行う必要があり、最終的なデータは次のようになります。
+-----------------------------------------------------------------+
| firmid nw lat lon near_nw_sum |
|-----------------------------------------------------------------|
1. | firm1 81 39.915526 -75.505018 (# workers near firm1) |
2. | firm2 35 39.548523 -75.201567 (# workers near firm2) |
3. | firm3 10 39.657866 -75.17988 (# workers near firm3) |
4. | firm4 83 39.957938 -75.898837 (# workers near firm4) |
5. | firm5 56 39.575881 -75.169157 (# workers near firm5) |
6. | firm6 73 39.886184 -75.857255 (# workers near firm6) |
7. | firm7 27 39.33288 -75.724665 (# workers near firm7) |
8. | firm8 75 39.165549 -75.96502 (# workers near firm8) |
9. | firm9 64 39.688819 -75.232764 (# workers near firm9) |
10. | firm10 76 39.012228 -75.166272 (# workers near firm10) |
+-----------------------------------------------------------------+
near_nw_sum変数を作成することが私の最終目標です。私の弱いデータ管理スキルのためにここであなたの助けが必要です.