Подсчет переменных за наблюдение в месяц в Сас - PullRequest
0 голосов
/ 05 апреля 2010

быстрый вопрос, у меня есть данные следующего вида:

Тикер _ Дата _ Fem Analyst (фиктивная 1, если истина) ___ Переменные этого месяца, такие как бета

AA _ 01/04/2001 _ 1 ___ 0,61

AA _ 05/04/2001 _ 1 ___ 0,62

AA _ 08/04/2001 _ 1 ___ 0,63

AA _ 01/05/2002 _ 1 ___ 0,7

AA _ 04/05/2002 _ 1 ___ 0,71

AA _ 08/07/2002 _ 0 ___ 0,8

AA _ 07/04/2003 _ 1 ___ 0,4

и т. Д. Я хочу получить следующее:

Тикер _ Дата Количество женщин-аналитиков Количество мужчин-аналитиков _ Всего ___ Переменных

AA _ 04/2001 3 0 _ 3 ___ 0,63

AA _ 05/2002 2 0 _ 2 ___ 0,71

AA _ 07/2002 0 1 _ 1 ___ 0,8

AA _ 04/2003 1 0 _ 1 ___ 0,4

Итак, алгоритм подсчета, который позволяет мне подсчитывать количество аналитиков женского и мужского пола для определенной компании в месяц (используя фиктивную переменную пол 0 или 1) и удаляет все наблюдения за этот месяц, кроме самого последнего (например, для 08/04/01 это становится 04/01 с 0,63, что является самым последним наблюдением для бета-версии для 04/01 для компании AA) Пример объясняет все это, я думаю?

Есть идеи?

1 Ответ

1 голос
/ 06 апреля 2010

Вы можете захотеть что-то вроде этого:

/* Create the month variable into a string YYYY/MM */
data analysts0;
    set <your data>;
    format month $7.;
    month=cats(year(date),'/',put(month(date),z2.));
run;
/* Sort so you can do the by processing required for counting */
proc sort data=analyst0 out=analyst1;
    /* You need to include the date in the sort so the most recent is last */
    by ticker month date;
run;
/* Count */
data count;
    retain n_fem n_male 0;
    set analyst1;
    by ticker month;
    if first.ticker of first.month then do;
        n_fem=0;
        n_male=0;
    end;
    else do;
       if gender=1 then n_fem+1;
       else if gender=0 then n_male+1;
       else put 'Huh?';
    end;
    /* this outputs only the values you need.*/
    if last.ticker or last.month then output;
run;

Это должно дать вам общее представление - у меня сейчас нет доступа к SAS, поэтому я не могу проверить код. См. Документацию для сохранения и обработки на шаге данных для получения более подробной информации.

...