Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
conhecimentos de
programao no SAS
O que veremos:
Processos Iterativos
Conhecimento de Arrays
Algumas funes interessantes no
SAS
IF / ELSE / DO
Exemplo: prog2. FFMETHOD
IF (expression) THEN
DO;
< additional SAS statements >
END;
IF / ELSE / DO
DATA BUYHISTORY;
SET PROG2.FFMETHOD;
LENGTH METHOD $ 13;
IF INTERNET = 'Y' THEN
DO;
METHOD='Internet';
OUTPUT;
END;
IF TELEPHONE = 'Y' THEN
DO;
METHOD='Telephone';
OUTPUT;
END;
IF TRAVELAGENCY = 'Y' THEN
DO;
METHOD='Travel Agency';
OUTPUT;
END;
KEEP ID METHOD;
RUN;
data growth;
set prog2.growth;
run;
data forecast1;
drop numemps;
set prog2.growth;
year=1;
newtotal= numemps*(1 + increase);
output;
year=2;
newtotal= newtotal*(1 + increase);
output;
year=3;
newtotal= newtotal*(1 + increase);
output;
run;
data forecast2;
set prog2.growth (rename=(numemps=newtotal));
do year=1 to 3;
newtotal=newtotal*(1+increase);
output;
end;
run;
DO WHILE / DO UNTIL:
DO WHILE / DO UNTIL a expresso validada pelo sas no
nicio do do while/do until, se no
for o sas nem executa.
DO WHILE (expression)
< additional SAS statements >
END;
DO UNTIL (expression)
< additional SAS statements >
END;
data invest;
do until
(capital>1000);
year+1;
capital+5;
capital+
(capital*.075);
end;
run;
data invest;
do while (capital<1000)
year+1;
capital+5;
capital+(capital*.075);
end;
run;
data invest3;
do year=1 to 25 until (capital>250);
capital+5;
capital+(capital*.075);
end;
run;
NESTED DO LOOPS:
Exemplo: prog2.banks
3x
PROCEDIMENTO ARRAY:
Pode-se utilizar o ARRAY para simplificar clculos
repetitivos dentro do SAS;
Cria diversas variveis com os mesmos atributos
Leitura de dados
Entre outros
{}
[]
()
ID
QTR1
CONTRIB
QTR2
QTR3
QTR4
1
elemento
2
elemento
3
elemento
4
elemento
Contrib{1}
Contrib{2}
Contrib{3}
Contrib{4}
Exerccio 1:
Um Ski-Resort tem anotado a temperatura diria. Cada observao
(prog2.ski) contem a data por hora das temperaturas em Fahrenheit
comeando em 1:00.
Exerccio 1:
Um Ski-Resort tem anotado a temperatura diria. Cada observao
(prog2.ski) contem a data por hora das temperaturas em Fahrenheit
comeando em 1:00.
Exerccio 1: (continuao)
Criar um data set chamado celsius por leitura do data set prog2.ski.
Converter todas as temperaturas de T1 a T24 para Celsius. Usar a
seguinte frmula:
Celsius temperature=5*(fahrenheit temperature 32)/9
(no para criar novas variveis com a temperatura celsius)
Exerccio 1: (resposta)
data celsius;
set prog2.ski;
cost=0;
array temps{24} T1-T24;
do i= 1 to 24;
temps{i}=round(5*(temps{i}-32)/9,.1);
if temps{i} lt 2 then
cost+125;
end;
run;
Exerccio 2:
Criar um data step quarter - a partir do prog2.donate. Calcular a mdia
de contribuio para os empregadores por semestre, e ento calcular a
diferena entre cada contribuio semestral e a mdia. Use ARRAY para
a performance do clculo.
Exerccio 2: (resposta)
data quarter (drop=qtr qtr1-qtr4);
set prog2.donate;
array contrib{4} QTR1-QTR4;
array diff{4};
average=mean(of qtr1-qtr4);
do qtr=1 to 4;
diff{qtr}=contrib{qtr}-average;
end;
run;
Exerccio 2: (resposta)
FUNES
State $18
Columbus, OH 43227
OH
NEWID $6
F161
PHRASE $200
services
data scan;
text='(Thursday July 4, 1776)';
var1=scan(text,1);
var2=scan(text,4);
var3=scan(text,5);
var4=scan(text,2,',');
var5=scan(text,2,',)');
run;
Var1
Var2
Var3
Var4
Var5
$200
$200
$200
$200
$200
Thursday
1776
1776)
1776
PHRASE $21
Software and services
PHRASE $200
services