SAS Arrays - Создать максимальное значение за месяц - PullRequest
0 голосов
/ 05 марта 2012

Мне нужно использовать массив SAS, чтобы создать максимальное значение для каждого месяца, чтобы определить, какая программа дольше всех работала.

Данные будут:

 Month  Value   Program
  Jan     8      A
  Jan     6      B
  Feb     2      C
  Feb     1      A
  Mar     9      C
  Mar     6      B

И так

Может кто-нибудь сказать мне синтаксис для использования

Ответы [ 2 ]

1 голос
/ 06 марта 2012

Я бы не использовал массивы ... Я бы отсортировал данные, а затем использовал бы Сначала. нотации.

Proc sort data=data;
 by month descending value;
run;

Data longest;
 set data;
 by month descending value;
 if first.month then output;
run;

Это даст вам запись за каждый месяц с наибольшим значением.

Обновление:

Сила массивов заключается в обработке переменных в одном наблюдении. Вы можете сохранить массивы, но объект Hash будет более подходящим для проверки переменных по наблюдениям, если ваши данные слишком велики для сортировки, а затем обработайте их с шагом данных.

0 голосов
/ 06 марта 2012

Как упоминала Каролина, массивы используются для чтения переменных в одном и том же наблюдении.Они не подходят для достижения вашей цели здесь.Простой КРАТКИЙ ОБЗОР, вероятно, самый простой способ достичь этого.Я предполагаю, что ваши реальные данные за время, затраченное на выполнение, записываются в доли секунды, и поэтому практически невозможно запустить 2 программы в одно и то же время в месяце.Если нет, то вам нужно будет подумать, что делать в случае связи (в этом случае лучше использовать proc sql).

Вот код, если вы хотите видеть программу с самым высокимзначение, а не само значение, затем удалите «значение» в скобках с помощью «программы».

    data have;
    input month $ value program $;
    cards;
      Jan     8      A
      Jan     6      B
      Feb     2      C
      Feb     1      A
      Mar     9      C
      Mar     6      B
    ;
    run;

    proc summary data=have nway;
    class month;
    output out=want (drop=_:) maxid(value(program value))=;
    run;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...