Below is an example of using AGGREGATE
to generate the requested table of proportions. There are so many different confidence intervals for proportions (see this NABBLE discussion that also links to various code snippets) so I'll let you figure out which confidence interval you want on your own.
data list free / pers.id holiday.
begin data
1 0
1 1
1 0
1 0
1 1
1 0
2 0
2 0
2 1
2 0
5 0
5 1
5 0
9 0
9 0
9 0
9 0
end data.
DATASET DECLARE AggProp.
AGGREGATE
/OUTFILE = 'AggProp'
/BREAK = pers.id
/HolidayT=SUM(holiday)
/HolidayP=MEAN(holiday)
/NId=N.