BookmarkSubscribeRSS Feed
☑ This topic is solved. Need further help from the community? Please sign in and ask a new question.
abqdiane
Obsidian | Level 7

Hi,

I took the SAS 9.4 Base Certification practice exam.  Below are the steps for question 13.

This project will use data set cert.input36. At any time, you may save your program as program36 in cert\programs.
Write a SAS program that will clean the data in cert.input36 as follows:

    • Step 1:
      • create a temporary data set, cleandata36.
      • In this data set, convert all group values to upper case.
      • Then keep only observations with group equal to 'A' or 'B'.
    • Step 2:
      • Determine the MEDIAN value for the Kilograms variable for each group (A,B) in the cleandata36 data set. Round MEDIAN to the nearest whole number.
    • Step 3:
      • create results.output36 from cleandata36
      • Ensure that all values for variable Kilograms are between 40 and 200, inclusively.
      • If the value is missing or out of range, replace the value with the MEDIAN Kilograms value for the respective group (A,B) calculated in step 2.

How many observations are in results.output36?

The original dataset had 5000 observations.

My answer was   4897 observations.

The practice exam has 4992 observations for the answer.

I can't figure out why there is a 95 observation difference.

 

I did answer the second question regarding the median correctly.

Thanks for your help.

 

 

I used the following code:

data cleandata36;
set cert.input36;
group = upcase(group);
where group in ('A' 'B');
run;

proc means data=cleandata36 median maxdec=0;
class group;
var kilograms;
run;

data results.output36;
set cleandata36;
if Group = 'A' and kilograms lt 40 or kilograms gt 200 then kilograms = 79;
if Group = 'B' and kilograms lt 40 or kilograms gt 200 then kilograms = 89;
run;


proc means data=results.output36 maxdec= 2 min max mean median n;
class group;
var kilograms;
run;




The answer code is:
data work.cleandata36;  
set cert.input36; group=upcase(group);
if group in ('A','B');
run;
proc means data=work.cleandata36 median;
  class group;
  var kilograms;
run;

data results.output36;
  set cleandata36;
  if Kilograms < 40 or Kilograms > 200 then do;
    if group='A' then kilograms=79;
    else kilograms=89;
  end;
run;

proc contents data=results.output36;

 

 

1 ACCEPTED SOLUTION

Accepted Solutions
ballardw
Super User

Here is a small example of what the difference is:

data example;
  input group $;
datalines;
a
A
b
B
;

data usewhere;
   set example;
   group=upcase(group);
   where group in ('A' 'B');
run;
data useif;
   set example;
   group=upcase(group);
   if group in ('A' 'B');
run;

WHERE used the values from in input data set vector, the "upcase" is basically ignored at it would be applied after the selection.

IF uses the values of the variable as encountered.

So your code did not select the values of group from 'a' and 'b' that should be converted to 'A' and 'B' resulting in fewer observations.

 

View solution in original post

8 REPLIES 8
ballardw
Super User

Here is a small example of what the difference is:

data example;
  input group $;
datalines;
a
A
b
B
;

data usewhere;
   set example;
   group=upcase(group);
   where group in ('A' 'B');
run;
data useif;
   set example;
   group=upcase(group);
   if group in ('A' 'B');
run;

WHERE used the values from in input data set vector, the "upcase" is basically ignored at it would be applied after the selection.

IF uses the values of the variable as encountered.

So your code did not select the values of group from 'a' and 'b' that should be converted to 'A' and 'B' resulting in fewer observations.

 

abqdiane
Obsidian | Level 7

Thanks for the great explanation.

 

abqdiane
Obsidian | Level 7

and the example. I ran the code and it helps me to see it on my own.

Mansi24
Calcite | Level 5

The  output values of median we  are getting are as follows :

for group 'A' median=79,

for group 'B' median=89,

but when using this values as answer to questions in SAS practice test available on SAS website it shows as wrong answer.

 

Correct answer shown there are 

for group 'A' median=76.3

for group 'B' median=86.5

 

Can anyone please confirm what are the correct answers.

 

 

 

PaigeMiller
Diamond | Level 26

@Mansi24 wrote:

The  output values of median we  are getting are as follows :

for group 'A' median=79,

for group 'B' median=89,

but when using this values as answer to questions in SAS practice test available on SAS website it shows as wrong answer.

 

Correct answer shown there are 

for group 'A' median=76.3

for group 'B' median=86.5

 

Can anyone please confirm what are the correct answers.


@Mansi24 

No one knows what this means. You have given us no context and tried to ask in an old thread which is unrelated to your question. Please start a new thread, people will be happy to help you in a new thread. Please make sure you provide all necessary background and context to your question.

--
Paige Miller
ballardw
Super User

@Mansi24 wrote:

The  output values of median we  are getting are as follows :

for group 'A' median=79,

for group 'B' median=89,

but when using this values as answer to questions in SAS practice test available on SAS website it shows as wrong answer.

 

Correct answer shown there are 

for group 'A' median=76.3

for group 'B' median=86.5

 

Can anyone please confirm what are the correct answers.

 

 

 


Without data and the actual code run there is no way to answer you question.

Since you say this on the SAS website then post the link to the page with the DATA and then show us the code you ran against that data set.

Tom
Super User Tom
Super User

The difference is like the difference between the bouncer at the door of Studio 54 and host at a restaurant.

 

The bouncer (the WHERE) prevents you from entering the building and the host (subsetting IF) prevents you from getting to a table.

abqdiane
Obsidian | Level 7

What a great way to remember!

thanks.
Diane

SAS Innovate 2025: Call for Content

Are you ready for the spotlight? We're accepting content ideas for SAS Innovate 2025 to be held May 6-9 in Orlando, FL. The call is open until September 25. Read more here about why you should contribute and what is in it for you!

Submit your idea!

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
  • 8 replies
  • 1210 views
  • 4 likes
  • 5 in conversation