Сначала я создам поддельные данные для демонстрации:
data list list/ID (a1) actvt1 to actvt5 (5f1).
begin data
"a", 1, 1, 2, 2, 3
"b", 1, , 1, 2, 2
"c", 1, , 2, 2,
"d", , 1, 1, 1, 2
"e", , , 3, 2, 1
end data.
varstocases /make activity from actvt1 to actvt5/null=keep.
Следующий синтаксис пропустит отсутствующие данные и подсчитает количество изменений в кодах активности для каждого идентификатора - добавление номера в набор данных.
compute tmp=activity.
if $casenum>1 and missing(tmp) and ID=lag(ID) tmp=lag(tmp).
if $casenum>1 and ID=lag(ID) and tmp<>lag(tmp) change=1.
aggregate /out=* mode=add /break=ID /changes=sum(change).