BookmarkSubscribeRSS Feed
robertrao
Quartz | Level 8

Hi Team,

I did not understand how to interpret this small program. Could someone help me.

data a;

do A=0,1;

do B=0,1;

do Y=1,2;

input F @@;

output;

end;

end;

end;

datalines;

23 63 31 70 67 100 70 104

;

run;

Output is:

A   B   Y   F

0   0    1   23

0   0    2   63

0   1    1   31

0   1     2   70

1   0     1    67

1   0    2     100

1    1    1     70

1     1   2    104

Thanks

5 REPLIES 5
art297
Opal | Level 21

It is doing exactly what the program is telling it to do.

When  A=0 and B=0 and Y=1 it is inputting the first value (23)

it continues to read the same record because of the @@ included in the input statement.

Then when A=0 and B=0 and Y=2 it reads the second record

Then when A=0 and B=1 and Y=1 it reads the third record,

etc., etc., etc.

robertrao
Quartz | Level 8

Thanks so much for the explanation.

Regards

bnarang
Calcite | Level 5

It seems to me like a cartesian Product.

Tom
Super User Tom
Super User

It is a short hand way to enter data when the design factors (A,B,Y) are fixed.  Only the value of F needs to be in the input data as the relative order determines what value of A,B,Y goes with the particular value of F.

Things that this program uses that beginners might not understand :

Use of trailing @@ on INPUT statement.  This is not strictly needed in the example program because all of the data is on one line so that a single at sign would also work.  But the double at sign allows you to split the data across rows when you have more than can fit on a single line of the input program.  For example in this program you can split the input data into two or more lines and get the same result.

Use of DO loop with a list of values.  In fact with a DO loop in SAS you can actually have in more complex list of values.  You can have :

do i=1 to 5,10,15 ;

And it will run the loop 7 times with I being set to 1,2,3,4,5,10,15 .

Use of the OUTPUT statement.  This will cause it to generate an observation in the output dataset.  So in this case one iteration of the data step will generate 2*2*2=8 output observations.

robertrao
Quartz | Level 8

Thanks so much for the details  to understand the topic

Regards

sas-innovate-2024.png

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.

 

Register now!

How to Concatenate Values

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.

Click image to register for webinarClick image to register for webinar

Classroom Training Available!

Select SAS Training centers are offering in-person courses. View upcoming courses for:

View all other training opportunities.

Discussion stats
  • 5 replies
  • 862 views
  • 0 likes
  • 4 in conversation