Один из способов - извлечь записи TIME = 'T0' и объединить их с другими записями.
Сначала давайте преобразуем вашу таблицу в набор данных.
data have ;
input b $ Time $ date :yymmdd.;
format date yymmdd10.;
cards;
one T0 2016-11-10
two T0 2016-11-17
one T1 2017-01-05
two T1 2017-02-28
one T2 2017-07-06
two T2 2017-09-05
;
Теперь давайте изменим порядок, чтобы мы могли объединить с помощью переменной группировки, B
.
proc sort ;
by b time ;
run;
Вот способ объединения данных с самим собой.
data want ;
merge have(where=(time ne 'T0'))
have(keep=time b date rename=(time=time0 date=date0) where=(time0='T0'))
;
by b ;
diff = date - date0;
drop time0;
run;
Результаты:
Obs b Time date date0 diff
1 one T1 2017-01-05 2016-11-10 56
2 one T2 2017-07-06 2016-11-10 238
3 two T1 2017-02-28 2016-11-17 103
4 two T2 2017-09-05 2016-11-17 292