2016-08-29 9 views
0

Я пытаюсь суммировать данные в Stata. У меня есть коды местной власти Великобритании (например, E06000047) и набор данных, который глубже на уровне (MSOA).Суммарные наблюдения в 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 

Поскольку я не заинтересован в MSOA-уровне-данных я хотел бы суммировать данные на местный уровень аутентификации коды. Там, где я терпит неудачу, я не могу рассчитать строковые данные. То, что я хочу сделать, это:

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

Так что я ожидаю что-то вроде:

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

см. 'Help collapse'. Все, что вам нужно, должно быть там. – ander2ed

+1

Вы не текстовые сообщения или ограничены в количестве символов. Пожалуйста, избегайте сокращений, таких как «sth» и неграмотные обычаи, такие как «i» для «I». –

+0

Хорошие вопросы показывают некоторую попытку кода. Пожалуйста, прочитайте http://stackoverflow.com/help/mcve –

ответ

1

Для такого простого реферирования, никакие петли не нужны. Вот воспроизводимый пример с egen, используемый для создания переменных с использованием by() (его аргумент может быть числовым или строковым и действительно не обязательно должен быть одной переменной). tabdisp может быть удобным для простых таблиц.

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

Поскольку это не ясно из вашего вопроса, если ваша цель состоит в том, чтобы подготовить доклад, например, Ник, или, чтобы сделать первый шаг к анализу на уровне местных органов власти, вот код, который использует collapse принять ваш данных и сократить его до уровня местных органов власти.

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

.