2016-08-29 13 views
0

Ich versuche Daten in Stata zusammenzufassen. Ich habe britische Kommunalbehörden (z. B. E06000047) und einen Datensatz, der um eine Ebene (MSOA) tiefer liegt.Summe Beobachtungen in Stata

MSOA code MSOA name   Local authority code Net weekly income 
E02004297 County Durham 001 E06000047    480.00 
E02004290 County Durham 002 E06000047    540.00 
E02004298 County Durham 003 E06000047    520.00 
E02004299 County Durham 004 E06000047    430.00 
E02004291 County Durham 005 E06000047    400.00 

Da ich in der i MSOA-Level-Daten interessiert mich nicht möchten, dass die Daten auf lokalen Auth-Code Ebene zusammenzufassen. Wo ich versage ist die Tatsache, dass ich mit String-Daten nicht rechnen kann. Was ich tun möchte, ist:

foreach identical "Local authority code" take the mean/median and 
store it in a var "means.local-auth" 

Also, was ich erwarte, ist so etwas wie:

Local authority code means.local-auth median.local-auth 
E06000047    474.00   480.00 
E06000048    486.00   485.00 
+1

siehe 'help collapse'. Alles was du brauchst, sollte da sein. – ander2ed

+1

Sie werden hier nicht getextet oder die Anzahl der Zeichen begrenzt. Bitte vermeiden Sie Abkürzungen wie "sth" und Analphabeten wie "ich" für "Ich". –

+0

Gute Fragen zeigen einige Versuche an Code. Bitte lesen Sie http://stackoverflow.com/help/mcve –

Antwort

1

Für diese Art von einfachen Verdichtungs, sind keine Schleifen erforderlich. Hier ist ein reproduzierbares Beispiel mit egen verwendet, um Variablen mit by() (sein Argument kann numerisch oder Zeichenfolge und in der Tat muss nicht eine einzige Variable sein) zu produzieren. tabdisp kann für einfache Tabellen geeignet sein.

sysuse auto, clear 
egen mean_mpg = mean(mpg), by(rep78) 
egen median_mpg = median(mpg), by(rep78) 

tabdisp rep78, c(mean_mpg median_mpg) 

---------------------------------- 
Repair | 
Record | 
1978  | mean_mpg median_mpg 
----------+----------------------- 
     1 |   21   21 
     2 |  19.125   18 
     3 | 19.43333   19 
     4 | 21.66667  22.5 
     5 | 27.36364   30 
     . |  21.4   22 
---------------------------------- 

tabdisp rep78, c(mean_mpg median_mpg) format(%2.1f) 

---------------------------------- 
Repair | 
Record | 
1978  | mean_mpg median_mpg 
----------+----------------------- 
     1 |  21.0  21.0 
     2 |  19.1  18.0 
     3 |  19.4  19.0 
     4 |  21.7  22.5 
     5 |  27.4  30.0 
     . |  21.4  22.0 
---------------------------------- 
2

Da es aus Ihrer Frage nicht klar ist, wenn Ihr Ziel ist es, ein Bericht, wie Nicks zu erzeugen, oder den ersten Schritt in Richtung einer Analyse auf kommunaler Ebene zu bringen, hier ist Code, der collapse zu nehmen verwendet Ihre Daten und reduzieren sie auf die kommunale Ebene.

. * Example generated by -dataex-. To install: ssc install dataex 
. clear 

. input str20(msoa_c msoa_n lac) float income 

      msoa_c    msoa_n   lac income 
    1. "E02004297" "County Durham 001" "E06000047" 480 
    2. "E02004290" "County Durham 002" "E06000047" 540 
    3. "E02004298" "County Durham 003" "E06000047" 520 
    4. "E02004299" "County Durham 004" "E06000047" 430 
    5. "E02004291" "County Durham 005" "E06000047" 400 
    6. end 

. format income %9.2f 

. drop msoa_c msoa_n 

. collapse (mean) mean_inc=income (median) med_inc=income, by(lac) 

. list 

    +--------------------------------+ 
    |  lac mean_inc med_inc | 
    |--------------------------------| 
    1. | E06000047  474.00 480.00 | 
    +--------------------------------+ 

.