Stata: Extrahieren von Werten und speichern Sie diese als Skalare (und mehr)

Diese Frage ist ein follow-up-Frage Stata: ersetzen, wenn forvalues. Betrachten Sie diese Daten:

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 */

Den ersten 10 Beobachtungen:

     +--------------------------------------+
     | 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 |
     +--------------------------------------+

Brauche ich zur Berechnung der Entfernungen zwischen Firma 1 und alle anderen Firmen. So, die vincenty Befehl sieht wie folgt aus:

. scalar theLat = 39.915526
. scalar theLon = -75.505018
. vincenty lat lon theLat theLon, hav(distance_km) inkm

Die vincenty-Befehl erstellt die distance_km variable, der die Entfernungen zwischen jeder Beobachtung und fest 1. Hier habe ich manuell kopieren und fügen Sie die beiden zahlen, die sind 39.915526 und -75.505018.

Frage 1: Was ist die syntax, dass Extrakte aus diesen zahlen?

Nun, ich kann halten, Beobachtungen, wo distances_km <= 2. Und,

. egen near_nw_sum = sum(nw)

wird erstellen Sie die Summe der Arbeitnehmer innerhalb von 2 Kilometern der Firma 1. (Oder, die Zusammenbruch Befehl kann den job zu erledigen.)

Frage 2: ich muss dies für alle Unternehmen, und die endgültigen Daten sollte wie folgt Aussehen:

     +-----------------------------------------------------------------+
     | 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)   |
     +-----------------------------------------------------------------+

Erstellen der near_nw_sum variable ist meine Letzte Ziel. Ich brauche Ihre Hilfe hier für meine schwachen Daten-management-Fähigkeiten.

InformationsquelleAutor Bill TP | 2013-11-05
Schreibe einen Kommentar