BookmarkSubscribeRSS Feed
JayP
Calcite | Level 5

Q. Write the data step that creates a variable that should have the number of animals that are 200 kg or heavier than 200 kg.

My Ans - This code is not giving me desired results. Any modification on what is the issue ASAP will be of great help.

 

data animal_weight;
input animals $ weight;
datalines;
dog 19
cat 14
mice 0.25
camel 575
pigeon 0.57
cow 475
goat 18
fish 4
horse 450
donkey 330
monkey 23
lion 580
rat 0.69
rabbit 2.5
Pig 235
crow 1.8
;
run;
data sum; set animal_weight;
count=0;
array animl(*)_numeric_;
do i = 1 to 16;
if animl(i) >= 200 then count + animl(i);
proc print data=sum;
end;
run;

quit;

3 REPLIES 3
PGStats
Opal | Level 21

Revise the notion of implicit looping in the data step. This would work:

 

data over200; 
set animal_weight end=done;
count + (weight >= 200);
if done then output;
keep count;
run;

Explain the role of each statement to deserve a good mark.

PG
Shmuel
Garnet | Level 18

Your first step creates a table where each animal holds one row;

 

You cannot use array to deal with different rows;

You can use an array only to deal with a set of variables in the same row.

 

Next code will do what you ask:

data want;

  set animal_weight  end=eof;

        retain count  sum_weight  0;

        if weight GE 200 then do;

             sum_weight = sum(of  sum_weight , weight);

             count+1;

        end;

        if eof then put sum_weight=  count=;

run;

Astounding
PROC Star

I'm heavily biased toward using a DATA step, but I would switch for this task:

 

proc sql;

select count(*) from animal_weight where weight >= 200;

quit;

hackathon24-white-horiz.png

2025 SAS Hackathon: There is still time!

Good news: We've extended SAS Hackathon registration until Sept. 12, so you still have time to be part of our biggest event yet – our five-year anniversary!

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.

SAS Training: Just a Click Away

 Ready to level-up your skills? Choose your own adventure.

Browse our catalog!

Discussion stats
  • 3 replies
  • 1552 views
  • 0 likes
  • 4 in conversation