The CREATE command can construct a new variable whose values are the cumulative sums of another variable (CSUM).  You could do that and then just COMPUTE a 0/1 variable from that.

 

HTH,

Jon Peck

 

From: SPSSX(r) Discussion [mailto:SPSSX-L@LISTSERV.UGA.EDU] On Behalf Of Hartman, Lacey (MDH)
Sent: Wednesday, October 21, 2009 3:46 PM
To: SPSSX-L@LISTSERV.UGA.EDU
Subject: [SPSSX-L]

 

I need to assign a dummy variable equal to 1 until a weighted proportion for a subset of cases reaches a certain cutoff.  So, for example, I want to assign records as SI=1 until the proportion of (sum of weights where SI=1 for a given class)/(sum of weights for all records in a given class)=0.13.

 

 

I have already used the aggregate function to assign the sum of weights to each record depending on what class they are in, but I’m trying to figure out a way to use a loop statement to create the numerator that I need above so that the loop knows when to stop.  But it doesn’t seem that aggregate works within the LOOP END LOOP function, I tried this code:

 

loop if (indic=1 & sizemore1=1 & prop1<.0875).

compute si=1.

aggregate

/break si

/sumnum1=sum(perwt06f).

do if si=1.

compute prop1=sumnum1/sumwt1.

end if.

end loop.

 

Would appreciate any advice about a better approach.

 

Thanks!