HI I have a dataset like this
sort1 | sort2 | var1 | var2 | var3 | var4 | var5 | var6 |
1 | 1 | 5 | 0 | ||||
2 | 2 | 1 2 3 4 | 7 8 9 5 | 0.1 | 0.1 | 0.1 | 2 |
3 | 2 | 1 2 3 5 | 3 4 5 6 | 0.1 | 0.1 | 0.1 |
If var2 is 0 in the first line ,
I need to set var3,var4,var5,var6 as zero in teh next 2 lines.
How do I do this?
Thanks,
Archana
A sum statement creates a retained variable which is useful here
data a;
infile datalines truncover;
input sort1 sort2 var1 var2 var3 var4 var5 var6;
datalines;
1 1 5 0
2 2 1 2 3 4 7 8 9 5 0.1 0.1 0.1 2
3 2 1 2 3 5 3 4 5 6 0.1 0.1 0.1
;
data want;
set a;
if var2 = 0 then doit = 2;
else if doit then do;
var3=0; var4=0; var5=0; var6=0;
doit + (-1);
end;
drop doit;
run;
Hi Archana,
This looks like a job for the retain statement to set up a flag.
How about something like:
data new;
retain delflag; * don't reset this value to missing for every iteration;
set old;
if _n_ eq 1 and var2=0 then delflag="Y"; * check for var2=0 only on the first iteration;
if _n_ gt 1 and delflag="Y" then do;
var3=0;
var4=0;
var5=0;
var6=0; * Set to zeros only if correct condition met;
end;
run;
A sum statement creates a retained variable which is useful here
data a;
infile datalines truncover;
input sort1 sort2 var1 var2 var3 var4 var5 var6;
datalines;
1 1 5 0
2 2 1 2 3 4 7 8 9 5 0.1 0.1 0.1 2
3 2 1 2 3 5 3 4 5 6 0.1 0.1 0.1
;
data want;
set a;
if var2 = 0 then doit = 2;
else if doit then do;
var3=0; var4=0; var5=0; var6=0;
doit + (-1);
end;
drop doit;
run;
It gets a little more complex if VAR2 could be 0 on consecutive observations.
Don't miss out on SAS Innovate - Register now for the FREE Livestream!
Can't make it to Vegas? No problem! Watch our general sessions LIVE or on-demand starting April 17th. Hear from SAS execs, best-selling author Adam Grant, Hot Ones host Sean Evans, top tech journalist Kara Swisher, AI expert Cassie Kozyrkov, and the mind-blowing dance crew iLuminate! Plus, get access to over 20 breakout sessions.
Learn how use the CAT functions in SAS to join values from multiple variables into a single value.
Find more tutorials on the SAS Users YouTube channel.