2016-12-13 3 views
0

Привет, что я хочу сделать группой по идентификатору, если переменная страница и шаг внутри идентификатора совпадают.Сравнение данных по идентификатору

Пример: enter image description here

Так здесь вы можете увидеть, что идентификационный номер 2 (неокрашенные) и 4 (зеленый), имеет ту же самую страницу, и шаги.

Пример 2 - здесь вы можете увидеть, как я хочу, чтобы моя переменную id_group: enter image description here '

Как вы можете видеть группу id_group 11 и 12 дают два групп, которые Actaully то же самое на странице и переменной шага.

Вопрос заключается в следующем: как мне динамически назначить один и тот же идентификатор группы, если группа переменных страницы и шага одинакова внутри идентификатора?

Возможно ли это в SAS? если это невозможно в SAS. Python может это сделать.

+0

Могу ли я узнать, что такое SAS? – Shane

+0

это язык программирования: http://www.sas.com –

+0

Резервируйте свои данные, чтобы вы использовали 'BY PAGE STEP'. – Tom

ответ

1

В SAS вы можете использовать так называемую двойную петлю DOW (Google, если вам нужна дополнительная информация). Это дважды повторяется в исходной таблице, в первый раз, чтобы определить, какие идентификаторы имеют одинаковое значение для PAGE и STEP, и установить флаг GROUP_ID. Второй раз назначает GROUP_ID всем записям с этим идентификатором.

data have; 
input page step id; 
datalines; 
1 1 1 
1 2 1 
2 3 1 
3 4 1 
1 1 2 
2 2 2 
3 3 2 
5 1 3 
6 2 3 
1 1 4 
2 2 4 
3 3 4 
; 
run; 

data want; 
do until(last.id); 
set have; 
by id; 
if first.id then do; /* reset counts when id changes */ 
    _count=0; 
    _same=0; 
    end; 
_count+1; /* count number of records per id*/ 
_same+(page=step); /* count number of times page = step */ 
if last.id and _count=_same then do; 
    _flag+1; /* if count = same then increment _flag by 1 */ 
    group_id=_flag; 
    end; 
drop _: ; /* drop temporary variables */ 
end; 
do until(last.id); 
set have; 
by id; 
output; 
end; 
run; 
+0

спасибо! Ты мне очень помог! Единственное, чего мне не хватает, это дать другим «группам» group_id, , и если бы был новый набор наблюдений, то он выглядел как ID = 1, тогда он должен быть в одной группе. Это может быть группа 2. Прямо сейчас, она присваивает только группе 1 право? –

+0

Хорошо, с вашего вопроса не совсем ясно, как должен выглядеть результат. Я только что изменил код, чтобы он каждый раз увеличивал значение GROUP_ID на 1 каждый раз, когда был получен действительный результат. – Longfish

+0

Извините, если он неясен. Я обновил свой вопрос с примера 2. Здесь вы можете видеть, что если есть шаблон со страницей и шагом. Я хочу, чтобы она была назначена той же группе. –