Извините за неопределенный заголовок.
Мой набор данных по существу походит на это:
ID X
18 1
18 1
18 2
18 1
18 2
369 2
369 3
369 3
361 1
то, что я хочу, должно найти макс. значение x для каждого идентификатора. В этом наборе данных, который был бы 2 для ID=18 и 3 для ID=361.
Любая обратная связь значительно ценилась бы.
Proc Means с оператором класса (так что вам не нужно сортировать) и запрос максимальной статистики, вероятно, самый простой подход (непроверенный):
data sample; input id x; datalines; 18 1 18 1 18 2 18 1 18 2 369 2 369 3 369 3 361 1 ; run; proc means data=sample noprint max nway missing; class id; var x; output out=sample_max (drop=_type_ _freq_) max=; run;
Подробнее о Proc Means ( http://support.sas.com/onlinedoc/913/docMainpage.jsp ).
Я не совсем понимаю ваш пример. Я не могу представить, что входной набор данных действительно имеет все значения в одном наблюдении. Вы имеете в виду что-то вроде этого?
data sample;
input myid myvalue;
datalines;
18 1
18 1
18 2
18 1
18 2
369 2
369 3
369 3
361 1
;
proc sort data=sample;
by myid myvalue;
run;
data result;
set sample;
by myid;
if last.myid then output;
run;
proc print data=result;
run;
Это даст вам такой результат:
Obs myid myvalue
1 18 2
2 361 1
3 369 3
Используйте соответствующий proc
с оператором by
. Например,
data sample;
input myid myvalue;
datalines;
18 1
18 1
18 2
18 1
18 2
369 2
369 3
369 3
361 1
;
run;
proc sort data=sample;
by myid;
run;
proc means data=sample;
var myvalue;
by myid;
run;