Sie sind auf Seite 1von 6

SAS

/* Entrada e manipulao de dados no data set do SAS */


data teste2; input trat $ 1 bloco 3 PESO 5-7; cards; A 1 100 A 1 108 A 2 130 A 2 133 B 1 99 B 1 94 B 2 145 B 2 146 ; data teste4; input trat $ bloco PESO @@@@; cards; A 1 100 A 1 108 A 2 130 A 2 133 B 1 99 B 1 94 B 2 145 B 2 146 ; proc print data=teste2; run; proc print data=teste4; run; data teste5; do trat='A', 'B'; input bloco PESO; output; end; cards; 1 100 1 108 2 130 2 133 1 99 1 94 2 145 2 146

Bbc234567 1 94 Bbc234567 2 145 Bbc234567 2 146 ; proc print data=teste7; run;

/* A VARIAVEL TRAT TEM 9 DIGITOS: Abc234567 E PESO TEM 3 : 100*/


data teste9; input trat $ bloco PESO; if bloco <=1 then CONJUNTO='C100'; else CONJUNTO='C200'; cards; A 1 100 A 1 108 A 2 130 A 2 133 B 1 99 B 1 94 B 2 145 B 2 146 ; proc print data=teste9; run;

/*DELETA*/
data teste10; input trat $ bloco PESO; if trat='A' then delete; cards; A 1 100 A 1 108 A 2 130 A 2 133 B 1 99 B 1 94 B 2 145 B 2 146 ;

/*O OUTPUT SER A 1 100 B 1 108 A 2 130 B 2 133 ...*/


data teste8; length trat $ 9; length PESO 3; input trat $ bloco PESO; cards; Abc234567 1 100 Abc234567 1 108 Abc234567 2 130 Abc234567 2 133 Bbc234567 1 99

/*SUBSTITUI*/
data teste11; input trat $ bloco PESO; if PESO=100 then PESO=333; cards; A 1 100 A 1 108 A 2 130 A 2 133 B 1 99 B 1 94 B 2 145 B 2 146 ; proc print data=teste10; run; proc print data=teste11; run;

/*Ordena por notas e depois pela soma*/


proc sort data=notas ; by descending soma; run;

/* lendo um arquivo de dados */


data Peruanos; infile "D:\JCFogo\Documents\Disciplinas\ECB\Dad os\PeruanosSAS.txt"; input Idade Tempo Peso Altura Pulso Sistol Diastol; if Sistol > 130 then Pressao='Hipertenso'; else Pressao='Normal'; run;

/*Exporta para o excel*/


PROC EXPORT DATA= WORK.PERUANOS OUTFILE= "D:\JCFogo\Documents\Disciplinas\ECB\Per uanos.xls" DBMS=EXCEL2000 REPLACE; SHEET="Peruanos"; RUN;

/*Importa do Excel */

PROC IMPORT OUT= WORK.Acoes DATAFILE= "D:\JCFogo\Documents\Disciplinas\EMult\D ados\Bolsa_Valores.xls" DBMS=EXCEL2000 REPLACE; SHEET="Plan1$"; GETNAMES=YES; RUN;

/*Mostra quem hipertenso e quem normal de acordo com a presso*/


data Hipertensos; set Peruanos; if Pressao='Hipertenso'; run; data Normais; set Peruanos; if Pressao='Normal'; run;

/*No precisa colocar o cjto de dados novamente*/


data tcoelhos; set coelhos;

/*Grficos*/

/*Aparece exp1 e exp2 na mesma tela*/


data exp12; set exp1 exp2; run;

/*Aparece 3 e 4 usar proc sort antes*/


data tudo34; merge exp3 exp4; by tipo;

proc univariate data=Hipertensos normal plot; var Sistol Diastol; run; proc chart data=hipertensos; title 'Histograma'; vbar Sistol; run; proc plot data=hipertensos; plot Sistol*Peso; run; proc gplot data=hipertensos; title "Peruanos com Pressao Sistolica Elevada"; symbol i=none v=dot h=1 c=blue; plot Sistol*Peso; run;

_______________________________________________________________________________________

/* operao com vetores */


proc iml; X={94,197,16,38,99,141,23};

/*Faz um vetor de elementos 1 em n linhas*/


um=j(n,1); print um;

/* ou ainda */
X2={ 94, 197, 16, 38, 99, 141, 23}; print X X2;

/*numero de linhas do vetor x*/


n=nrow(x); print n;

/* produto escalar */ soma=t(x)*um; /*produto escalar de x pela matriz de elementos=1 que a soma dos elementos de x*/ sq=x`*x; /*transposta de x*x pois no tem como fazer produto escalar de matrizes de dimenses diferentes*/
print soma; print sq;

/* exemplo de produto elemento-elemento */ x2 = x#x; /*x2=cada elemento de x ao quadrado*/ sq2 = sum(x2); /*soma de cada elemento de x ao quadrado*/
print x2 sq2;

/* diviso elemento-elemento */
c = a/b; print 'Matrizes diviso elemento-aelemento'; print a b c; d = b/a; h = a/g;

/* produto elemento-elemento */
c = a#b; print 'Matrizes produto elemento-aelemento'; print a b c; d = a#g;

xbar=soma/n; /*mdia*/ sx=(sq-(xbar**2)*n)/(n-1);

/*varincia*/

dpx=sqrt(sx); /*desvio print n xbar sx dpx; quit;

padro */

/* produto de matrizes */
c = a*g; print 'Produto entre matrizes'; print a g c; d = a*b; d1 = a`*b; print d1; quit; proc iml;

print a b; print c d; h = a+g;

/* concatenao */ c = a||b; /* por colunas */ d = a//b; /* por linhas */


print 'Matrizes concatenao por colunas e linhas'; print a b; print c d; h = a||g;

/* criando indces e sequncias */ m = 3:9; /*Cria uma matriz m, de 3 at 9 (linha)*/ n = 4:-2; /*de 4 at -2*/
print 'ndices e sequncias'; print m n;

/* vetores e matrizes de um's */


o = 1:5;

linha)*/
p = o//o;

/* o=elementos de 1 at 5 (1

k = 5; um1 = J(5,1); um2 = j(1,5); print 'Matrizes e vetores de 1`s'; print um1 um2; mum = J(4,4); print mum

/* aparece duas vezes o vetor o, um embaixo do outro*/ q= p//p; /* quatro vezes o o*/
print o p q;

/* 5 linhas de um`s */ /* 5 colunas de um`s */ /*matriz de um`s 4x4*/

________________________________________________________________________ /* elementos 1, 2, 3, 4, 5 dispostos em linhas */ k8 = 8*j(5,1); /* matriz5x1 de elementos 8 */


z = t(1:5); print z k8; proc iml;

/* produto de matrizes */
a = {4 0 3, 5 2 -3}; b = {-2 4, 1 -2, 7 9}; g = {7 1,-2 5}; c = a*b; d = b*a; print c d;

'Calculando mdia e varincia amostrais';


print xbar = z`*j(nrow(z),1)/nrow(z); print xbar; desv = z-xbar*J(nrow(z),1); SQ = t(desv)*desv; print SQ; s2 = SQ/(nrow(z)-1); print z xbar desv s2; quit;

/*Produto elemento-elemento*/
a2 = a##2; b2 = b##(-1); print a a2; print b b2; print g c d;

3};

/* matriz diagonal, mostra apenas a diagonal das matrizes */


diag_a = diag(a); diag_b = diag(b); print diag_a diag_b; y = {1,2,3,4}; /* diag_y = diag(y); print y diag_y;

/* potncia de matrizes */ c = g**2; /* ou*/


d = g*g; proc iml; a = {4 0 3, 5 2 -3, 1 4 6}; b = { 4 5 -3 0 3 -2, 2 -3 1, 2 6 8,

uma matriz coluna*/

/* matriz identidade */
id5 = print id8 = print quit; i(5); id5; diag(j(8,1)); id8;

_________________________________________________________________

## lendo um arquivo no formato .txt (read.table())


dados1 <- read.table("E:\\JCFogo\\Documents\\Disciplinas\\ECB\\Dados\\Dengue Discrim.prn", head=T) mean(INC) attach(dados1) mean(INC)

## mdia de INC

read.table("E:\\JCFogo\\Documents\\Disciplinas\\ECB\\Dados\\Dengue Discrim.prn", row.names=1, head=T)

## ainda
dados2 <- read.table(file.choose(), header=T) dados2

## lendo arquivos separados por vrgula - comando read.csv()


dados3 <- read.csv(file.choose(), header = TRUE) dados3 <- read.csv("E:\\JCFogo\\Documents\\Disciplinas\\ECB\\Dados\\Delimitados4.csv", header = TRUE) read.csv("E:\\JCFogo\\Documents\\Disciplinas\\ECB\\Dados\\Delimitados3.csv", row.names=1, header = TRUE) read.csv("E:\\JCFogo\\Documents\\Disciplinas\\ECB\\Dados\\Delimitados3.csv", skip=1, col.names=c("Aluno","nota1","nota2","disc"), header = TRUE)

## lendo arquivos separados por ponto-e-vrgula -comanbdo read.csv2()


################################################ dados4 <- read.csv2("E:\\JCFogo\\Documents\\Disciplinas\\ECB\\Dados\\Delimitados4.csv", header = TRUE)

## lendo arquivos com outros delimitadores-comando read.delim()


read.delim("E:\\JCFogo\\Documents\\Disciplinas\\ECB\\Dados\\Delimitados1.txt", sep="&", header = TRUE) read.csv("E:\\JCFogo\\Documents\\Disciplinas\\ECB\\Dados\\Delimitados1.txt", sep="&", header = TRUE)

## Lendo dados atravs do comando scan()


dados5 <- scan("E:\\JCFogo\\Documents\\Disciplinas\\ECB\\Dados\\Dengue Discrim.prn", list(" "," ",0,0,0,0), skip=1)

dados5 cidade <- dados5[[1]]; grp <- dados5[[2]]; incid <- dados5[[3]]; dados5[[4]]; Lpop <- dados5[[5]]; renda <- dados5[[6]] dengue <- data.frame(cidade, grp, incid, coleta, Lpop, renda)

coleta <-

dados5B <- scan("E:\\JCFogo\\Documents\\Disciplinas\\ECB\\Dados\\Dengue Discrim.prn", list(cidade=" ",grp=" ",incid=0,coleta=0,Lpop=0,renda=0), skip=1) cidade=dados5B$cidade

# outro exemplo
dados6 <- scan("E:\\JCFogo\\Documents\\Disciplinas\\ECB\\Dados\\Delimitados4.csv", sep=";", list(nome="",anos=0,kg=0,sex=""), skip=1) dados6 x1 <- rnorm(12) #Cria um vetor com 12 numeros x1 x2 <- trunc(20*rexp(12,2),0) x2 x3 <- LETTERS[1:12] #12 letras- de A at L x3 z1 <- data.frame(item=x3,expon=x2,normal=x1) z1 attach(z1)

#Cria uma matriz


z2 <- as.matrix(data.frame(expon=x2,normal=x1)) z2 is.matrix(z2) zz2 <- cbind(expon=x2,normal=x1) zz2

# uma matriz?

# uma matriz? ____________________________________________________________________ v1*v4 ##a) Definindo os vetores


is.matrix(zz2) v1 <- c(1,2,3,4,5,6,7,8,9,10) v2 <- c(10,9,8,7,6,5,4,3,2,1) v3 <- c(-2,-2,0,2,2) v4 <- c(2,2,2,2,2,-1,-1,-1,-1,-1) v5 <- c(-1,0,1) length(v1) length(v2) length(v3) length(v4) length(v5) v2/v1 v1/v4 v1^2 v2^2

##a.2) CUIDADO!
v1+v3 v4+v3 v1+v5 #No funciona v1+t(v2) v1*t(v2) v1*t(v3) v1*v3 t(v2)/v1 v1*v3 v1*v5

##

##a.1) operao elemento-a-elemento


v1+v2 v1+v4 v2-v1 v2-v4 v1*v2

## no funciona, mas v1*v3 sim!

#a.3) Observe agora #Soma dos elementos de v1 com a transposta de v2


sum(v1*t(v2)) sum(v1*v2) sum(v1*v3)

##a.4) produto interno (p.escalar)


v1%*%v2

tv2 <- t(v2) tv2 tv2%*%v1 v6 <- c(1,2,3) v7 <- c(4,-1) v6%*%v7 t(v6)%*%v7 v6%*%t(v7) t(v7)%*%v6 v7%*%t(v6)

##a.5) calculando o mdulo de um vetor


sqrt(t(v1)%*%v1) sqrt(sum(v1^2))

##b.2) CUIDADO!
ww2 <- matrix(c(1,1,1,1,0,0,-1,1),nrow=4) ww2

OU
modvet <- function(vetor){ sqrt(t(vetor)%*%vetor) } modvet(v1)

#Em colunas

##b.4) Com as dimenses certas


t(vv1)%*%t(ww)

##b) operando matrizes


vv1 <- rbind(v1,v2) vv1 dim(vv1) #2x10 length(vv1) #20

##c.4) gerando uma matriz diagonal


D1 <- diag(2,5,5) D1

#v1 e v2 em colunas
vv2 <- cbind(v1,v2) vv2 vv2*vv1 #No vv2*t(vv1) vv2+t(vv1) vv2-t(vv1) vv2/t(vv1) vv1%*%vv2 vv2%*%vv1 ww <- matrix(c(1,1,1,1,0,0,-1,1),nrow=4, byrow=T) ww

## tambm funciona para matriz quadrada


D1 <- diag(2,5) D1

funciona

## como fica para matriz no quadrada


D2 <- diag(2,5,3) D2 ## extraindo a diagonal D3 <- diag(B2)##

##b.1) Produto matricial

coloca em D3 a diagonal

de B2
D3

## monta uma matriz com a diagonal de outra


D3 <- diag(diag(B2)) D3

#Em linhas

/*EXPORTA UM CONJUNTO DE DADOS DO SAS PARA O EXCEL*/


PROC EXPORT DATA= WORK.PERUANOS OUTFILE= "C:\Users\Acer\Desktop\Peruanos.xls" DBMS=EXCEL2000 REPLACE; SHEET="Peruanos"; RUN;

/*IMPORTA UM CONJUNTO DE DADOS DO EXCEL PARA O SAS*/


PROC IMPORT OUT= WORK.Acoes DATAFILE= "D:\JCFogo\Documents\Disciplinas\EMult\Dados\Bolsa_Valores.xls" DBMS=EXCEL2000 REPLACE; SHEET="Plan1$"; GETNAMES=YES; RUN;

Das könnte Ihnen auch gefallen