Data Want;
Set Have;
Retain On_Off2 Cat2 Group2 Count;
By Id Notsorted;
Groups = Lag(Group);
If First.Id Then
Do;
On_Off2 = On_Off;
Cat2 = Category;
Group2 = Group;
Count = 1;
End;
Else
Do;
If Group ^= Groups Then Count + 1;
If On_Off ^= On_Off2 Then On_Off2 = Catx('_', On_Off2, On_Off);
If Category ^= Cat2 Then Cat2 = Catx('_', Cat2, Category);
Group2 = Catx('_', Group2, Group);
End;
If Last.Id;
If Count = 1 Then Group2 = Substr(Group2, 1, 1);
Keep ID On_Off2 Cat2 Group2;
Rename On_Off2 = On_Off Cat2 = Category Group2 = Group;
Run;
... View more