Date: Wed, 10 Mar 2004 16:25:26 +0100
Reply-To: "Groeneveld, Jim" <jim.groeneveld@VITATRON.COM>
Sender: "SAS(r) Discussion" <SAS-L@LISTSERV.UGA.EDU>
From: "Groeneveld, Jim" <jim.groeneveld@VITATRON.COM>
Subject: Re: help to find the logic
Content-Type: text/plain; charset="iso-8859-1"
Dear Vera,
Try this (*tested*):
data temp;
infile cards;
input v1-v10;
cards;
2 2 4 5 4 2 4 3 2 2
;
RUN;
DATA temp (DROP=I Found);
SET temp;
ARRAY Varray V1-V10;
Found = 0; * Thus reset to 0 for every observation, no RETAIN;
DO I = 2 TO 10; * !!! not 1 TO 10 !!!;
IF Varray(I) EQ 2 AND Varray(I-1) EQ 4 THEN Found=1;
IF Found THEN Varray(I) = 100;
END;
RUN;
proc print data=temp; run;
Regards - Jim.
--
. . . . . . . . . . . . . . . .
Jim Groeneveld, MSc.
Biostatistician
Science Team
Vitatron B.V.
Meander 1051
6825 MJ Arnhem
Tel: +31/0 26 376 7365
Fax: +31/0 26 376 7305
Jim.Groeneveld@Vitatron.com
www.vitatron.com
My computer remains home, but I will attend SUGI 2004.
[common disclaimer]
-----Original Message-----
From: Vera [mailto:vzamniborsch@HOTMAIL.COM]
Sent: Wednesday, March 10, 2004 16:07
To: SAS-L@LISTSERV.UGA.EDU
Subject: help to find the logic
I am a student who is trying some SAS.
The situation below is not a homework.
I need to find a certain value (provided that it is not the first or
consecutive to the first variable)in a series of consecutive variables
and then to change it and the rest of the varibales values to
something else. I tried array, but I cannot come up with the logic.
Could somebody help me, please?
Thank you, Vera.
This is an example, where I need to find "2" that follows "4" (v1=2
and v2=2 are the first ones, so they don't count) and change them and
the rest to 100.
data temp;
infile cards;
input v1-v10;
cards;
2 2 4 5 4 2 4 3 2 2
;
I need to have this:
2 2 4 5 4 100 100 100 100 100