Escolar Documentos
Profissional Documentos
Cultura Documentos
Question : What is the difference between using drop= data set option in data statement and set
statement?
Answer: If you dont want to process certain variables and you do not want them to appear in the new data
set, then specify drop= data set option in the set statement.
Whereas If want to process certain variables and do not want them to appear in the new data set, then specify
drop= data set option in the data statement.
Question: Given an unsorted dataset, how to read the last observation to a new data set?
Answer: using end= data set option.
For example:
data work.calculus;
set work.comp end=last;
If last;
run;
Where Calculus is a new data set to be created and Comp is the existing data set
last is the temporary variable (initialized to 0) which is set to 1 when the set statement reads the last
observation.
Question : What is the difference between reading the data from external file and reading the data
from existing data set?
Answer: The main difference is that while reading an existing data set with the SET statement, SAS retains the
values of the variables from one observation to the next.
proc sort ;
by month ;
run ;
proc means ;
by month ;
var avgtemp ;
run ;
Proc means is used to calculate average temperature by month (taking one variable value across an
observation).
data mydata2;
set mydata;
a=sum(x,y,z);
p=x+y+z;
run;
In the output, value of p is missing for 3rd, 4th and 5th observation as :
ap
39 39
31 31
31 31
5.
26 .
58 .
41 41
Question: What would be the result if all the arguments in SUM function are missing?
Answer: a missing value
Question: What would be the denominator value used by the mean function if two out of seven arguments
are missing?
Answer: five
Question: Give an example where SAS fails to convert character value to numeric value automatically?
Answer: Suppose value of a variable PayRate begins with a dollar sign ($). When SAS tries to automatically
convert the values of PayRate to numeric values, the dollar sign blocks the process. The values cannot be
converted to numeric values.
Therefore, it is always best to include INPUT and PUT functions in your programs when conversions occur.
Question: What would be the resulting numeric value (generated by automatic char to numeric conversion) of
a below mentioned character value when used in arithmetic calculation?
1,735.00
Answer: a missing value
Question: What would be the resulting numeric value (generated by automatic char to numeric conversion) of
a below mentioned character value when used in arithmetic calculation?
1735.00
Answer: 1735
Question: Which SAS statement does not perform automatic conversions in comparisons?
Answer: where statement
Question: Briefly explain Input and Put function?
Answer: Input function Character to numeric conversion- Input(source,informat)
put function Numeric to character conversion- put(source,format)
Question: What would be the result of following SAS function(given that 31 Dec, 2000 is Sunday)?
Weeks = intck (week,31 dec 2000d,01jan2001d);
Years = intck (year,31 dec 2000d,01jan2001d);
Question: What is the length assigned to the target variable by the scan function?
Answer: 200
Amount=1000;
Rate=.075/12;
do month=1 to 12;
Earned+(amount+earned)*(rate);
output;
end;
run;
How many observations would be there at the end of data step execution?
Answer: 12
Question: How do you use the do loop if you dont know how many times should you execute the do loop?
Answer: we can use do until or do while to specify the condition.
Question: How do you specify number of iterations and specific condition within a single do loop?
Answer:
data work;
do i=1 to 20 until(Sum>=20000);
Year+1;
Sum+2000;
Sum+Sum*.10;
end;
run;
This iterative DO statement enables you to execute the DO loop until Sum is greater than or equal to 20000 or
until the DO loop executes 10 times, whichever occurs first.
Question: If a variable contains only numbers, can it be character data type? Also give example
Answer: Yes, it depends on how you use the variable
Example: ID, Zip are numeric digits and can be character data type.
Question: If a variable contains letters or special characters, can it be numeric data type?
Answer: No, it must be character data type.
Prior to SAS 9.1, SAS data sets could contain up to 32,767 variables. In SAS 9.1, the maximum number of
variables in a SAS data set is limited by the resources available on your computer.
Question: Give some example where PROC REPORTs defaults are different than PROC PRINTs
defaults?
Answer:
Question: Give some example where PROC REPORTs defaults are same as PROC PRINTs defaults?
Answer:
;
run;
proc report data = mydat nowd;
column ID Age;
run;
b.
data mydat1;
input grade $ ID Age;
cards;
A 2 23
B 4 45
C 3 56
D 9 43
;
run;
proc report data = mydat1 nowd;
column Grade ID Age;
run;
Answer: When all the variables in the input file are numeric, PROC REPORT does a sum as a default.Thus first
program generates one record in the list report whereas second generates four records.
Question: In the above program, how will you avoid having the sum of numeric variables?
Answer: To avoid having the sum of numeric variables, one or more of the input variables must be defined
as DISPLAY.
Thus we have to use :
proc report data = mydat nowd;
column ID Age;
define ID/display;
run;
Question: What is the difference between Order and Group variable in proc report?
Answer:
If the variable is used as group variable, rows that have the same values are collapsed.
Group variables produce list report whereas order variable produces summary report.
Question: Give some ways by which you can define the variables to produce the summary report (using proc
report)?
Answer: All of the variables in a summary report must be defined as group, analysis, across, or
Computed variables.
Question: How to limit decimal places for variable using PROC MEANS?
Answer: By using MAXDEC= option
Question: What is the difference between CLASS statement and BY statement in proc means?
Answer:
Unlike CLASS processing, BY processing requires that your data already be sorted or
BY group results have a layout that is different from the layout of CLASS group results.
Question: What is the difference between PROC MEANS and PROC Summary?
Answer: The difference between the two procedures is that PROC MEANS produces a report by default. By
contrast, to produce a report in PROC SUMMARY, you must include a PRINT option in the PROC SUMMARY
statement.
Answer: To generate list output for crosstabulations, add a slash (/) and the LIST option to the TABLES
statement in your PROC FREQ step.
TABLES variable-1*variable-2 <* variable-n> / LIST;
Question: Proc Means work for ________ variable and Proc FREQ Work for ______ variable?
Answer: Numeric, Categorical
Question: How can you combine two datasets based on the relative position of rows in each data set; that
is, the first observation in one data set is joined with the first observation in the other, and so on?
Answer: One to One reading
Question: If you have two datasets you want to combine them in the manner such that observations in each
BY group in each data set in the SET statement are read sequentially, in the order in which the data sets and
BY variables are listed then which method of combining datasets will work for this?
Answer: Interleaving
Question: While match merging two data sets, you cannot use the __________option with indexed data sets
because indexes are always stored in ascending order.
Answer: Descending
Question: I have a dataset concat having variable a b & c. How to rename a b to e & f?
Answer: data concat(rename=(a=e b=f));
set concat;
run;
Question : What is the difference between One to One Merge and Match Merge? Give example also..
Answer: If both data sets in the merge statement are sorted by id(as shown below) and each observation in
one data set has a corresponding observation in the other data set, a one-to-one merge is suitable.
data mydata1;
input id class $;
cards;
1 Sa
2 Sd
3 Rd
4 Uj
;
data mydata2;
input id class1 $;
cards;
1 Sac
2 Sdf
3 Rdd
4 Lks
;
data mymerge;
merge mydata1 mydata2;
run;
If the observations do not match, then match merging is suitable
data mydata1;
input id class $;
cards;
1 Sa
2 Sd
2 Sp
3 Rd
4 Uj
;
data mydata2;
input id class1 $;
cards;
1 Sac
2 Sdf
3 Rdd
3 Lks
5 Ujf
;
data mymerge;
merge mydata1 mydata2;
by id
run;