I have this SAS sample code:
data BEFORE;
input v1 v2;
datalines;
1 2
;
data AFTER;
put 'Before IF: ' _ALL_;
if _N_ = 1 then set BEFORE;
put 'After IF : ' _ALL_;
run;
The output is:
BEFORE: v1=. v2=. _ERROR_=0 _N_=1
AFTER : v1=1 v2=2 _ERROR_=0 _N_=1
BEFORE: v1=1 v2=2 _ERROR_=0 _N_=2
AFTER : v1=1 v2=2 _ERROR_=0 _N_=2
And the output file contains:
Obs v1 v2
1 1 2
2 1 2
I would like to understand why two observations set in the new dataset with repeated values. Please clerify.
The reason why it's appearing twice is because of the below code
if _N_ = 1 then set BEFORE;
This step copies the results from before and pastes it After data set.
put 'After IF : ' _ALL_;
_ALL_ does the same but it copies the results from AFTER and pastes it again.
Fix to the code would be
data BEFORE;
input v1 v2;
datalines;
1 2
;
data AFTER;
put 'Before IF: ' _ALL_;
set BEFORE;
put 'After IF : ' _ALL_;
;
run;
proc print; run;
Take a look at: https://communities.sas.com/thread/31795?tstart=0
Join us for SAS Innovate April 16-19 at the Aria in Las Vegas. Bring the team and save big with our group pricing for a limited time only.
Pre-conference courses and tutorials are filling up fast and are always a sellout. Register today to reserve your seat.
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.