У меня есть приведенный ниже код, который прекрасно работает для сравнения строк в группе, когда первая строка не имеет значения.
data want_Find_Change;
set WORK.IA;
by ID;
array var[*] $ RATING;
array lagvar[*] $ zRATING;
array changeflag[*] RATING_UPDATE;
do i = 1 to dim(var);
lagvar[i] = lag(var[i]);
end;
do i = 1 to dim(var) ;
changeflag[i] = (var[i] NE lagvar[i] AND NOT first.ID);
end;
drop i;
run;
К сожалению, когда я использую набор данных с двумя строками на группу, я получаю неправильный возврат, я предполагаю, потому что первая строка должна использоваться в сравнении. Как я могу сравнить только строки и возврат только во второй строке. Это не сработало:
data Change;
set WORK.Two;
by ID;
changeflag = last.RATING NE first.RATING;
run;
Пример данных, которые у меня есть и которые я хочу
Group Name Sport DogName Eligibility
1 Tom BBALL Toto Yes
1 Tom golf spot Yes
2 Nancy vllyball Jimmy yes
2 Nancy vllyball rover no
хочу
Group Name Sport DogName Eligibility N_change S_change D_Change E_change
1 Tom BBall Toto Yes 0 0 0 0
1 Tom golf spot Yes 0 1 1 0
2 Nancy vllyball Jimmy yes 0 0 0 0
2 Nancy vllyball rover no 0 0 1 1