Как хитро оценить SAS? - PullRequest
0 голосов
/ 01 февраля 2020

SO Например, у меня есть такие данные, как

KEY  first count

11Y    1
11Y    2
11N    3
11N    4
11Y    5
11N    6

Я хочу выложить вот так

    KEY  first count  RANKS

    11Y    1          1
    11Y    2          1
    11N    3          2
    11N    4          2
    11Y    5          3
    11N    6          4

как мне это сделать в SAS?

Спасибо

Я сделал это

proc sort data=step3;
by first_count key;
run;

data step4;
set step3;
by key;
if first.key THEN ranks=1;
else ranks+1;
run;

Это вызывает ошибку

ОШИБКА: переменные BY неправильно отсортированы в наборе данных WORK.STEP3

Ответы [ 2 ]

2 голосов
/ 01 февраля 2020

НЕОБХОДИМО.

data key;
   input KEY:$3. count;
   cards;
11Y    1
11Y    2
11N    3
11N    4
11Y    5
11N    6
;
run;
data key2;
   set key;
   by key NOTSORTED;
   if first.key then rank+1;
   run;
proc print;
   run;

enter image description here

1 голос
/ 02 февраля 2020

На основе ответа пользователя DN Вы можете сделать это без оператора first.var.

data key;
   input KEY:$3. count;
   cards;
11Y    1
11Y    2
11N    3
11N    4
11Y    5
11N    6
;
run;
data key2;
   set key;
   rank + (key ^= lag(key));
   run;
proc print;
   run; 
...