2015-12-17 3 views
0

Я поставил данные, которые он включает в себя около 6000 наблюдений, это выглядит, как этотSas группировка строк

Id  mark 
134663 000 
134663 000 
134663 000 
134665 101 
134665 111 
134665 101 
134973 000 
134973 000 
134973 100 

метка на этом наборе данных является строка, которая генерируется знаком = mark1 !! Mark2 !! Mark3 что я хочу сделать, это группировать этот набор данных по id, и отметка должна быть самой большой из них . в конце он должен выглядеть следующим образом

id  mark 
134663 000 
134665 111 
134973 100 

Я пробовал разные вещи, но не смог сделать это. Надеюсь, я дал понять. И если вы, ребята, могли бы решить эту проблему, это было бы здорово Спасибо,

+0

Является ли 'mark' символ или числовой столбец? – Longfish

+0

Это персонаж – ozgur

+0

Спасибо, я предположил, из того, как он был создан, чтобы это было так, но лучше всего прояснить. Я бы использовал тот же метод, что и @data _null_, который работает, обеспечивая длину символа одинаково для всех записей (3 в вашем примере) – Longfish

ответ

1

Вы можете использовать PROC SUMMARY IDGROUP, чтобы найти максимальное значение MARK для каждого ID.

data mark; 
    input (id mark)(:$6. :$3.); 
    cards; 
134663 000 
134663 000 
134663 000 
134665 101 
134665 111 
134665 101 
134973 000 
134973 000 
134973 100 
;;;; 
    run; 
proc print; 
    run; 
proc summary data=mark nway; 
    class id; 
    output out=maxmark(drop=_:) idgroup(max(mark) out(mark)=); 
    run; 
proc print; 
    run; 

enter image description here

+0

Этот код решает мою проблему, большое вам спасибо. – ozgur

2

Также попробуйте использовать ргос SQL:

proc sql; 
     select distinct * from mark group by id having mark=max(mark); 
    quit; 
+0

Это тоже решает. Спасибо за помощь – ozgur

Смежные вопросы