Beruflich Dokumente
Kultur Dokumente
AEDB
Prof: Roberto C. Leoni
rea de trabalho (The Workspace) A rea de trabalho a tela inicial do R (Figura 2). Nela trabalhamos com diferentes tipos de objetos (vetores, matrizes, data fames, arrays, listas e funes). No final da sesso o usurio pode salvar tudo o que fez e na prxima vez em que for usar o R basta recarregar a rea de trabalho j salva. Os comandos so executados atravs do prompt da rea de trabalho. Figura 2: Workspace do R
Inicialmente vamos mostrar o R como calculadora. Por exemplo, tente fazer uma adio simples: > 3 + 5 # digite 3 + 5 no prompt! > # Obs: tudo o que aparece depois do smbolo # reconhecido como texto e no executado pelo R. [1] 8 # olhe o resultado. Vamos praticar com outros exemplos: > 2 + 3*4 # prioridade da operao multiplicao [1] 14 > 3/2+1 # prioridade da operao diviso [1] 2.5 >2*3^2 # potncias so indicadas por ^ ou ** [1] 18 Principais funes disponibilizadas pelo R > sqrt(2) # Encontra a raiz quadrada de 2 [1] 1.414214 > sin(pi/6) # Encontra o seno de 30 [1] 0.5 A seguir, apresentamos uma lista das principais funes e operadores aritmticos: Funo Descrio Operadores sqrt( ) raiz quadrada + abs( ) valor absoluto exp( ) exponencial de base e * log10( ) logaritmo na base 10 / log( ) logaritmo na base e ** ou ^ sin()cos() tan() funes trigonomtricas asin( ) acos( ) atan( ) funes trigonomtricas inversas Exemplos > log(8,2) # calcula o logaritmo de 8 na base 2 [1] 3 > log10(2) # calcula o logaritmo de 2 na base 10 [1] 0.30103 > log(2) # calcula o logaritmo de 2 na base "e" [1] 0.6931472
Para pedir ajuda ao R, por exemplo, para a raiz quadrada, digite uma das opes: > help(sqrt) > ?sqrt Atividades Propostas 1. Faa o download da verso mais recente do R para Windows (2.14.X); 2. Faa a instalao do programa em sua mquina; 3. Abra o programa clicando no cone do R; 4. Reconhea onde fica o prompt e reproduza o que foi apresentado na aula. 5. Digite o comando q( ) para fechar o programa R (responda sim a pergunta para salvar a rea de trabalho - worspace); 6. Agora ele estar pronto para ser usado na segunda aula. BOA SORTE!
Todos os objetos criados podem ser salvos permanentemente em um arquivo denominado .RData, no diretrio de trabalho do R. Veja: > save.image() # salva o workspace em arquivo do tipo .RData no diretrio de trabalho corrente. > dir() # veja os arquivos que existem no diretrio E para carregar o que foi salvo em outro momento, faa: Obs: Supomos aqui que voc saiu do R e voltou em outro momento. Lembre-se que o arquivo foi salvo no diretrio "c:\\estatistica\\.RData" . > load("c:\\estatistica\\.RData") Podemos ainda salvar somente o histrico dos comandos utilizados. > savehistory(file="meuscomandos") # salvar os comandos utilizados - default ".Rhistory" > loadhistory(file=" meuscomandos ") # carregar na rea de trabalho comandos salvos - default ".Rhistory"
Atividades Propostas 1. Crie o seu diretrio. 2. Mude a rea de trabalho do R para o diretrio que criou. 3. Crie objetos 4. Salve sua rea de trabalho. 5. Envie o arquivo .RData que salvou para o professor pelo link disponibilizado na aula 2. BOA SORTE!
Criando vetores Vetores so os tipos mais simples de objeto para armazenar dados no R. Digite cada linha a seguir no Prompt do R e analise o que acontece. > a <- c(1, 2, 5, 3, 6, -2, 4) >a [1] 1 2 5 3 6 -2 4 > b <- c("um", "dois", "trs") >b [1] "um" "dois" "trs" > c <- c(TRUE, TRUE, TRUE, FALSE, TRUE, FALSE) >c [1] TRUE TRUE TRUE FALSE TRUE FALSE > > a[3] # terceiro valor do vetor a [1] 5 > a[c(1, 3, 5)] # valores que esto na posio 1, 3 e 5 [1] 1 5 6 > a[2:6] # valores de 2 a 6 [1] 2 5 3 6 -2
> x<-scan() 1: 10.4 5.6 3.1 6.4 21.7 # aperte a tecla ENTER duas vezes. 6: Read 5 items >x [1] 10.4 5.6 3.1 6.4 21.7 # usamos ponto no lugar de vrgula. Ex: 10.4 significa 10,4 > frutas<-scan(what=" ", sep=",") 1: banana,uva,manga 4: Read 3 items > frutas [1] "banana" "uva" "manga" Veja outras opes. O que acontece em cada comando? > x<-rep('a',5) [1] "a" "a" "a" "a" "a" > x<-rep(2,6) >x [1] 2 2 2 2 2 2 > x<-rep(c('s','n'), c(2,4)) >x [1] "s" "s" "n" "n" "n" "n" > x<-rep(c(4, 5, 6), 2) >x [1] 4 5 6 4 5 6 > x<-seq(-1,1,0.4) >x [1] -1.0 -0.6 -0.2 0.2 0.6 1.0 > x<-seq(-1,1,length=6) >x [1] -1.0 -0.6 -0.2 0.2 0.6 1.0 > x<-seq(-1, by=0.4, length=6) >x [1] -1.0 -0.6 -0.2 0.2 0.6 1.0 > a<-gl(2,3) >a [1] 1 1 1 2 2 2 Levels: 1 2 > b<-gl(2,2, label=c("m","f")) >b [1] m m f f Levels: m f Podemos realizar operaes aritmticas com vetores, elemento a elemento, caso estes tenham a mesma dimenso. Considere os vetores relativos ao peso e altura de um grupo de 6 pessoas. > peso<-c(62, 70, 52, 98, 90, 70) > altura<-c(1.70, 1.82, 1.75, 1.94, 1.84, 1.61) Vamos calcular o ndice de massa corporal (i.m.c) para essas pessoas? peso i.m.c . altura2
> i.m.c<-peso/altura^2 > i.m.c [1] 21.45329 21.13271 16.97959 26.03890 26.58318 27.00513 Tente calcular o seu IMC! O que acontece se utilizamos os comandos a seguir? > max(peso) [1] 98 > min(peso) [1] 52 > range(peso) [1] 52 98 Para finalizar, perceba que objetos a, b e c so diferentes: > data.class(a) [1] "numeric" > data.class(b) [1] "character" > data.class(c) [1] "logical" Variveis nominais e ordinais No R uma varivel reconhecida como nominal usando-se o a funo factor(). Para variveis ordinais, usa-se o comando ordered( ). Vejam os exemplos: # uso do comando fator() # varivel sexo com 20 "masculino" e 30 "feminino" sexo <- c(rep("masculino ",20), rep("feminino ", 30)) sexoqual <- factor(sexo) summary(sexoqual) # uso do comando ordered() tamanho <- c("p", "g", "p", "m", "p", "g", "p", "g", "m") tamanho.ord <- ordered(tamanho, levels = c("p", "m", "g"), labels = c("pequeno", "mdio", "grande")) summary(tamanho.ord) Atividades Propostas 1. Crie o vetor: x<-c(0, 8, 9, 7, 4, 2, 10, 0, 2, 1) 2. Selecione via comando apenas o sexto elemento e o salve em um objeto chamado x1 x1<-x[6] 3. Agora selecione do segundo ao sexto elemento e o salve em um objeto chamado x2 x2<-x[2:6] 4. Tente isso: xa<-x[x > 4]. O que acontece? 5. Tente agora: xb<-x[x > 2 & x <= 8]. O que significa? 6. Crie uma varivel que contenha 100 dados qualitativos. 7. Use o comando factor() para transform-lo em qualitativo. 8. Crie um exemplo usando o comando ordered()
Uma matriz tambm pode ser construda pela combinao de dois ou mais vetores de mesmo comprimento (length). Do exemplo anterior, usando a funo cbind() e rbind(), a matriz, notas.matrix, pode ser definida por: # Definindo os vetores das notas e usando cbind notas.p1<-c(7.5, 8.1, 5.9, 7.8, 8.8) notas.p2<-c(6.9, 7.3, 6.8, 7.0, 7.9) notas.p3<-c(8.2, 6.7, 9.0, 7.5, 6.4) notas.matrix<-cbind(notas.p1, notas.p2, notas.p3) # Listando a matriz notas.matrix notas.p1 notas.p2 notas.p3 [1,] 7.5 6.9 8.2 [2,] 8.1 7.3 6.7 [3,] 5.9 6.8 9.0 [4,] 7.8 7.0 7.5 [5,] 8.8 7.9 6.4 Usando a funo rbind() para combinar os vetores como linhas da matriz. # Definindo os vetores das notas, usando rbind aluno1<-c(7.5, 6.9, 8.2) aluno2<-c(8.1, 7.3, 6.7) aluno3<-c(5.9, 6.8, 9.0) aluno4<-c(7.8, 7.0, 7.5) aluno5<-c(8.8, 7.9, 6.4) notas.matrix<-rbind(aluno1,aluno2,aluno3,aluno4,aluno5) # Listando a matriz notas.matrix [,1] [,2] [,3] aluno1 7.5 6.9 8.2 aluno2 8.1 7.3 6.7 aluno3 5.9 6.8 9.0 aluno4 7.8 7.0 7.5 aluno5 8.8 7.9 6.4 Podemos atribuir nomes s linhas e colunas de uma matriz. Para tanto, faa: > # Definindo os vetores das notas e usando cbind > c1<-c(7.5, 8.1, 5.9, 7.8, 8.8) > c2<-c(6.9, 7.3, 6.8, 7.0, 7.9) > c3<-c(8.2, 6.7, 9.0, 7.5, 6.4) > notas.matrix<-cbind(c1, c2, c3) > # Listando a matriz > notas.matrix c1 c2 c3 [1,] 7.5 6.9 8.2 [2,] 8.1 7.3 6.7 [3,] 5.9 6.8 9.0 [4,] 7.8 7.0 7.5 [5,] 8.8 7.9 6.4 > # Atribuindo os nomes s linhas e colunas > colnames(notas.matrix)<-c("Prova.1","Prova.2","Prova.3") > rownames(notas.matrix)<-c("Adriano","Pedro","Joana","Mario","Cintia")
> # Listando a matriz > notas.matrix Prova.1 Prova.2 Prova.3 Adriano 7.5 6.9 8.2 Pedro 8.1 7.3 6.7 Joana 5.9 6.8 9.0 Mario 7.8 7.0 7.5 Cintia 8.8 7.9 6.4 Agora voc deve estar se perguntando como possvel visualizar um elemento (ou um grupo de elementos) contido numa matriz. A lgica a mesma que com vetores, sendo que no caso das matrizes, os elementos possuem 2 coordenadas: uma para a linha e outra para a coluna, usando ainda os nossos colchetes lembra? > x<-matrix(1:20, nrow=5,ncol=4) >x [,1] [,2] [,3] [,4] [1,] 1 6 11 16 [2,] 2 7 12 17 [3,] 3 8 13 18 [4,] 4 9 14 19 [5,] 5 10 15 20 > x[,4] # 4 coluna de uma matriz [1] 16 17 18 19 20 > x[3,] # 3 linha de uma matriz [1] 3 8 13 18 > x[2:4,1:3] # linhas 2,3,4 e colunas 1,2,3 [,1] [,2] [,3] [1,] 2 7 12 [2,] 3 8 13 [3,] 4 9 14 Criando Array O conceito de array generaliza a ideia de matriz. Enquanto em uma matriz os elementos so organizados em duas dimenses (linhas e colunas), em um array os elementos podem ser organizados em um nmero arbitrrio de dimenses. Para maiores detalhes consulte help(array). Atividades Propostas 1. Crie a matriz e execute os comandos a seguir: x x[2, ] x[, 2] x[1, 4] x[1, c(4, 5)] O que significa cada resultado?
2. Execute o comando notas <- round(rnorm (20,6,1), 2) # este comando simula 20 valores. No se preocupe em entend-lo agora. Agora transforme o vetor notas em uma matriz com 5 linhas e 4 colunas e d nomes as linhas e colunas (qualquer nome).
1 2 3 4 5 6 7 8 9 10
# Lista o nmero de variveis (colunas) length(pessoas) # Mostra o nome das colunas names(pessoas) # Mostra a classe do objeto class(pessoas) # Mostra que a varivel sexo um fator class(pessoas$sexo) # Mostra a numerao das linhas row.names(pessoas) Outro exemplo: O R vem com vrios bancos de dados para ser usado como exemplo. Experimente digitar data(). Vamos usar um data.frame chamado ris. Para evitar alter-lo, vamos guardar o ris em um objeto denominado dados e trabalhar apenas com dados. >data(iris) >dados <- ris >dados # olhando tudo >dados[1:10, 1:5] #olhando apenas as 10 primeiras linhas e 5 primeiras colunas > dados[1:10, ] #idem >names(iris) # quais so as variveis?
[1] "Sepal.Length" "Sepal.Width" "Petal.Length" "Petal.Width" "Species" Dica: A descrio dessas variveis so: Sepal.Length Tamanho da spala Sepal.Width Largura da spala Petal.Length Tamanho da ptala Petal.Width Largura da ptala Species Espcie observada Entrando com dados atravs do teclado Uma opo para criar um data.frame usar o comando edit(). Experimente! meusdados <- data.frame(idade=numeric(0), sexo=character(0), peso=numeric(0)) meusdados <- edit(meusdados) DICA: Quer mudar o nome de alguma varivel ou algum valor digitado errado? pessoas<-data.frame(nomes=c("Adriano","Pedro","Joana","Mario", "Cintia","Maria","Antonio","Marta","Jos","Joo"), sexo=c("m","m","f","m","f","f","m","f","m","m"), idade=c(17, 18, 19, 20, 21, 22, 23, 24, 25, 26), altura=c(1.65,1.70,1.68,1.69,1.71,1.67,1.67,1.66,1.72,1.73)) # altere o nome que desejar e feche a janela de dados que aparece na tela. pessoas <- fix(pessoas) Criando Lista Uma lista o tipo de objeto mais flexvel do R, pois os componentes de uma lista podem ser de qualquer modo ou tipo, incluindo outras listas. Voc pode combinar, por exemplo, um vetor numrico com 10 valores e uma matriz de ordem 4 x 4. Exemplo Vamos construir e explorar uma lista com os dados de uma famlia: nome do pai, da me, nmero de filhos e idade dos filhos. # Trabalhando com Listas # Criando uma Lista dados1<-list(pai="Jose", esposa="Maria", n.filhos=3, idade.filhos=c(4, 7, 9)) # Apresentando a Lista dados1 # Extraindo as componentes com os seus respectivos valores dados1[1] dados1[2] dados1[3] dados1[4] # Extraindo elementos da lista dados1[[1]] dados1[[2]] dados1[[3]] dados1[[4]] # Ou com o nome da lista e da componente na lista dados1$pai dados1$esposa dados1$n.filhos
dados1$idade.filhos # Extraindo a idade do 2 filho dados1[[4]][2] # Criando uma nova lista com a nacionalidade nac<-list(nacionalidade="Brasileira") nac # Criando uma nova lista, com as duas listas "dados1" e "nac" dados2<-list(dados1,nac) dados2 # Adicionando uma nova componente a lista "dados1" dados1[[5]]<-list(nacionalidade="Brasileira") dados1 Atividades Propostas 1. Com o conjunto de dados ris execute os comandos a seguir e relate o que obtemos como resposta. >data(iris) >dados <- ris > dados[,5] >dados$Species > dados[dados$Petal.Length>6,]
Para usar um pacote, depois de instalado, basta usar o comando: > library (nomedopacote) Dica: O pacote denominado Rcmdr cria uma interface grfica para usar o R, ou seja, ele disponibiliza botes (como no excel) para executar muitas tarefas usuais. Exemplo: > install.packages(Rcmdr) #instala o pacote > library (Rcmdr) # carrega o pacote para ser usado > ??Rcmdr # help sobre o pacote Importao de dados Existem diversas formas de importar dados no R. Uma forma simples de transferir dados de uma planilha (Excel, Calc, etc.) para o R atravs da rea de transferncia (clipboard ou o famoso ctrl + c) atravs da seguinte funo: read.delim("clipboard",dec=",",header=T). clipboard indica que os dados esto na rea de transferncia, dec=, que utilizada a vrgula como separador decimal e header=T que a primeira linha contm ttulos das colunas. Considere que em uma planilha voc tem os dados A 186 192 195 197 199 199 200 200 202 B 81,0 88,7 78,4 101,2 77,6 92,3 90,3 91,3 87,6 Sexo M F M F M M M M M
Selecione a rea da planilha com os dados e copie (Ctrl C). No prompt do R escreva (no copie o comando a seguir porque assim os dados sairo da memria): > dados <- read.delim("clipboard", dec="," ,header=TRUE) # Os dados sero armazenados em dados. > dados
muito comum encontrar arquivos com dados no formato Excel ou Calc. Nesse caso, se salvarmos o arquivo com a extenso *.csv podemos importar os dados para R. Veja como: > dados2 <- read.table(file="c:/nomedoarquivo.csv", header=TRUE, sep=",", row.names="id") #ou ainda > dados3 <- read.csv("nomedoarquivo.csv") # Se quiser procurar o arquivo, uma terceira possibilidade : > data<-read.table(file.choose(),header=T, sep=",", row.names="id") Atividades Propostas 1. Salve o arquivo PIB.csv que est no site: http://dl.dropbox.com/u/32673292/curso%20R/PIB.csv 2. coloque o arquivo em seu diretrio de trabalho do R. lembra como? 3. importe os dados usando o comando read.table() > PIB <- read.table(file="PIB.csv", header=TRUE, sep=",", row.names="id") > PIB
evasao tabela = table(sexo,evasao) margin.table (tabela) margin.table(tabela, 1) # total por sexo margin.table(tabela, 2) # total por evaso prop.table(tabela) prop.table(tabela, 1) # por linha prop.table(tabela, 2) # por coluna # com trs variveis cruzadas idade = c(rep("jovem",19), rep("idoso", 33) ) tabela<- table(sexo,evasao, idade) ftable(tabela) #ftable apresenta uma sada mais organizada At o momento os exemplos foram criados usando vetores. Vamos usar data.frame: pessoas<-data.frame(nomes=c("Adriano","Pedro","Joana","Mario", "Cintia","Maria","Antonio","Marta","Jos","Joo"), sexo=c("m","m","f","m","f","f","m","f","m","m"), idade=c(17, 18, 19, 20, 21, 22, 23, 24, 25, 26), altura=c(1.65,1.70,1.68,1.69,1.71,1.67,1.67,1.66,1.72,1.73)) table(pessoas$sexo, pessoas$idade) # o smbolo $ acessa os dados de uma coluna especfica # por exemplo, pessoas$sexo indica que queremos a varivel sexo do data.frame pessoas. #vamos separar idade em duas faixas? idade.classificada = ifelse(pessoas$idade>20, "maior que 20","menor ou igual a 20") table(pessoas$sexo, idade.classificada) prop.table(table(pessoas$sexo, idade.classificada)) Usando o pacote gmodels library(gmodels) sexo = c(rep("masculino ",15), rep("feminino ", 27)) sexo evasao = c(rep("sade ",4), rep("interesse prprio", 15), rep("reprovao", 23) ) evasao CrossTable(sexo,evasao)
Aula 8 Grficos
Algumas configuraes para construir grficos so controladas pela funo par(). Veja o quadro com algumas funes disponveis. mfrow ps bg fg col.main, col.lab, col.sub, col.axis cex.main, cex.lab, cex.sub, cex.axis font.main, font.lab, font.sub, font.axis divide a janela onde os grficos sero construdos, cujo valor do tipo c(nl, nc), em que nl o nmero de linhas e nc o nmero de colunas em que a janela ser dividida controla o tamanho de todos os textos nos grficos, cujo valor deve ser um nmero inteiro controla a cor de fundo da janela dos grficos. Vejas as cores com o comando colors() controla a cor dos eixos e das bordas dos smbol os dos grficos controla as cores do ttulo, dos nomes dos eixo, do rodap e dos valores dos eixos, respectivamente
controla o tamanho da fonte, do ttulo, dos nomes d os eixos, do rodap e dos valores dos eixos, respectivamente, sendo que os valores positivos menores ou maiores do que 1, diminuem ou aumentam o tamanho, respectivamente
controla a fonte a ser usada, com base em nmeros inteiros de 1 a 20, sendo que o nmero 1 indica texto normal, o 2 negrito, o 3 itlico e o 4 negrito + itlico
Exemplos: par(mfrow=c(1,2)) # Dividir a janela dos grficos em uma linha e duas colunas colors() par(bg="grey") # Modificar a cor de fundo para cinza Setor (pizza) #dados j tabulados. vendas <- c(0.12, 0.3, 0.26, 0.16, 0.04, 0.12) names(vendas) <- c("Blueberry", "Cherry","Apple", "Boston Cream", "Other", "Vanilla Cream") vendas pie(pie.sales, main="Vendas") #quer mudar as cores? pie(pie.sales, col = c("purple", "violetred1", "green3","cornsilk", "cyan", "white")) #dados tabulados na hora pessoas<-data.frame(nomes=c("Adriano","Pedro","Joana","Mario", "Cintia","Maria","Antonio","Marta","Jos","Joo") , sexo=c("m","m","f","m","f","f","m","f","m","m") , idade=c(17, 18, 19, 20, 21, 22, 23, 24, 25, 26), altura=c(1.65,1.70,1.68,1.69,1.71,1.67,1.67,1.66,1.72,1.73)) pie(table(pessoas$sexo), main="Sexo dos alunos....") slices <- c(10, 12,4, 16, 8) lbls <- c("US", "UK", "Australia", "Germany", "France") pie(slices, labels = lbls, main="Pie Chart of Countries")
# com Porcentagem slices <- c(10, 12, 4, 16, 8) lbls <- c("US", "UK", "Australia", "Germany", "France") pct <- round(slices/sum(slices)*100) lbls <- paste(lbls, pct) # add percents to labels lbls <- paste(lbls,"%",sep="") # ad % to labels pie(slices,labels = lbls, col=rainbow(length(lbls)), main="Pie Chart of Countries") # 3D Explodido library(plotrix) slices <- c(10, 12, 4, 16, 8) lbls <- c("US", "UK", "Australia", "Germany", "France") pie3D(slices,labels=lbls,explode=0.1, main="Pie Chart of Countries ") Coluna (barras) barplot(vendas) barplot(table(pessoas$sexo), main="Sexo dos alunos....", xlab="Sexo", ylab="Frequncia") # velocidade de veculos que passaram na Av Duque de Caxias em 15-03-2004. vel=c(21,21,21,22,23,24,29,30,30,30,31,32,32,33,34,34,34,34,34,35,35,35,36,37,38,38,38,38,38,38,39,39,40 ,41,43,43,43,43,44,44,44,45,45,46,46,47,47,47,48,49,49,50,50,50,51,51,51,51,53,53,53,55,56,56,57,57,58,5 8,58,60,60,60,61,61,62,62,62,62,63,63, 63,63,64,64,64,64,65,65,66,66,67,68,68,68,70,70,70,71,71,75) #transformando para varivel qualitativa vel2=ifelse(vel<=36,"veloc baixa",ifelse(vel<=44,"veloc normal","veloc alta")) vel2 vel.tab=table(vel2) #tabulando os dados vel.tab # grfico de coluna barplot(vel.tab,col=c(4,2,5),legend.text=T,main="Velocidade de 100 veculos \n Av Duque de Caxias - 1503-04", sub="Fonte:PRF") Mais um exemplo. Vamos copiar os dados abaixo do clipboard. Copie o quadro (ctrl + c) a seguir e digite: dados <- read.delim("clipboard",dec=",",header=T) cat produo unid.prod Fab 1 17,5 9 Fab 2 15,2 20 Fab 3 10,3 500 Fab 4 8,4 150 Fab 5 20,3 900 produo = dados$produo nomes = dados$cat names(produo) <- nomes barplot(produo, main="Ttulo.", col.main=c("red")) Outros exemplos: counts <- table(mtcars$gear) barplot(counts, main="Car Distribution", xlab="Number of Gears")
counts <- table(mtcars$gear) barplot(counts, main="Car Distribution", horiz=TRUE, names.arg=c("3 Gears", "4 Gears", "5 Gears")) par(las=2) # texto perpendicular a y par(mar=c(5,8,4,2)) # aumenta margem de y. counts <- table(mtcars$gear) barplot(counts, main="Car Distribution", horiz=TRUE, names.arg=c("3 Gears", "4 Gears", "5 Gears"), cex.names=0.8) Grfico de colunas (barras) para tabelas cruzadas (dupla entrada) Copie o quadro (ctrl + c) a seguir e digite: va <- read.delim("clipboard",row.names=1) Local C Local B Local A G1 3 10 50 G2 G3 30 70 80 30 15 5
# veja que va um data.frame vamos trata-lo como matriz com o comando as.matrix barplot(as.matrix(va), ylim=c(0,140), xlab="grupos",ylab="n de viagens", sub="Fonte: Empresa ECT", legend.text=row.names(va), args.legend=list(x = "topleft", bty="n")) Dicas: para transpor a matriz: t(as.matrix(va)) para obter a frequncia relativa: prop.table(as.matrix(va),2) para barras justapostas: beside=T para barras horizontais: horiz=T adiciona uma linha abaixo das barras (Opo ao box): axis.lty=1 Exemplos modificados: barplot(t(prop.table(as.matrix(va),2)), xlab="grupos",ylab="n de viagens", beside=T, legend.text=row.names(va), args.legend=list(x = "topleft", bty="n")) barplot(as.matrix(va), xlab="grupos",ylab="n de viagens", beside=T, legend.text=row.names(va), args.legend=list(x = "topright", bty="n"), horiz=T) Outros exemplos: counts <- table(mtcars$vs, mtcars$gear) barplot(counts, main="Car Distribution by Gears and VS", xlab="Number of Gears", col=c("darkblue","red"), legend = rownames(counts)) counts <- table(mtcars$vs, mtcars$gear) barplot(counts, main="Car Distribution by Gears and VS", xlab="Number of Gears", col=c("darkblue","red"), legend = rownames(counts), beside=TRUE) Dot Plots # Dotplot Simples #Vamos usar o banco de dados mtcars que vem no R.
dotchart(mtcars$mpg,labels=row.names(mtcars),cex=.7, main="Gas Milage for Car Models", xlab="Miles Per Gallon") # Dotplot: por grupos e colorido # ordenar pela varivel mpg, agrupar e colorir pela varivel cylinder x <- mtcars[order(mtcars$mpg),] # ordenando por mpg x$cyl <- factor(x$cyl) # tem que ser um factor x$color[x$cyl==4] <- "red" x$color[x$cyl==6] <- "blue" x$color[x$cyl==8] <- "darkgreen" dotchart(x$mpg,labels=row.names(x),cex=.7,groups= x$cyl, main="Gas Milage for Car Models\ngrouped by cylinder", xlab="Miles Per Gallon", gcolor="black", color=x$color) Grfico de linha (temporal) O comando plot(x, y) produz o grfico. Funo lines( ) adiciona linha ao grfico. dia=c(1:10) venda = c(7,6,5,7,6,8,9,8,10,12) plot(dia,venda) lines(dia,venda)
#consumo de energia eltrica no 1o. sem de 2003 e 2004 no perodo fora da ponta (horrio de pico). sem1.2003=c(579.744,614.952,683.640,618.300,721.980,776.736) sem1.2003 sem1.2004= c(631.476,564.084,689.904,786.564,715.284,835.272) sem1.2004 # construindo os grficos de linha ou tendncia plot(sem1.2003,type="b",main="Consumo de energia eltrica (fora da ponta)\n 1 Sem 2003 ",xlab="meses",ylab="consumo") plot(sem1.2004,type="b",main="Consumo de energia eltrica (fora da ponta)\n 1 Sem 2004 ",xlab="meses",ylab="consumo") # olhando os dois na mesma tela par(mfrow=c(1,2)) plot(sem1.2003,type="b",main="Consumo de energia eltrica (fora da ponta)\n 1 Sem 2003 ",xlab="meses",ylab="consumo") plot(sem1.2004,type="b",main="Consumo de energia eltrica (fora da ponta)\n 1 Sem 2004 ",xlab="meses",ylab="consumo") par(mfrow=c(1,1)) # vamos coloc-los na mesma escala para comparaes par(mfrow=c(1,2)) menor= min(sem1.2003,sem1.2004) maior= max(sem1.2003,sem1.2004) par(mfrow=c(1,2)) plot(sem1.2003,type="b",main="Consumo de energia eltrica (fora da ponta)\n 1 Sem 2003 ",xlab="meses",ylab="consumo", ylim=c(menor,maior)) plot(sem1.2004,type="b",main="Consumo de energia eltrica (fora da ponta)\n 1 Sem 2004 ",xlab="meses",ylab="consumo", ylim=c(menor,maior)) par(mfrow=c(1,1))
# vamos manipular os grficos! par(mfrow=c(1,2)) plot(sem1.2003,type="b",main="Consumo de energia eltrica (fora da ponta)\n 1 Sem 2003 ",xlab="meses",ylab="consumo", ylim=c(0,2000)) plot(sem1.2004,type="b",main="Consumo de energia eltrica (fora da ponta)\n 1 Sem 2004 ",xlab="meses",ylab="consumo", ylim=c(0,2000)) par(mfrow=c(1,1)) # tudo em apenas um grfico plot(sem1.2003,col="red",type="l",main="Consumo de energia eltrica \n (fora da ponta) 1 Sem 2003 e 1 Sem 2004",xlab="meses",ylab="consumo",ylim=c(500,900)) lines(sem1.2004,col="blue") text(c(5,5),c(600,650),c("1 sem 2003","1 sem 2004"),col=c("red","blue"))
Usando plot() com parmetro type type p l o s, S h Descrio Pontos Linhas Pontos e linhas escada histograma
x <- c(1:5) y <- x par(pch=22, col="red") # plotting symbol and color par(mfrow=c(2,3)) # all plots on one page opts = c("p","l","o","s","S","h") for(i in 1:length(opts)){ heading = paste("type=",opts[i]) plot(x, y, type="n", main=heading) lines(x, y, type=opts[i]) } #um exemplo mais complexo #conjunto de dados Orange Orange #saiba mais sobre este conjunto de dados do R ?Orange # converte factor para numrico Orange$Tree <- as.numeric(Orange$Tree) arvores <- max(Orange$Tree) # amplitude de x e y xrange <- range(Orange$age) yrange <- range(Orange$circumference) # alguns parmetros do grfico plot(xrange, yrange, type="n", xlab="Idade (dias)", ylab="Circunferncia (mm)" ) colors <- rainbow(arvores) linetype <- c(1: arvores)
plotchar <- seq(18,18+ arvores,1) # adicionar linhas for (i in 1:ntrees) { tree <- subset(Orange, Tree==i) lines(tree$age, tree$circumference, type="b", lwd=1.5, lty=linetype[i], col=colors[i], pch=plotchar[i]) } # adicionar ttulo e subttulo title("crescimento da rvore", "exemplo grfico de linha ") # adicionar legenda legend(xrange[1], yrange[2], 1: arvores, cex=0.8, col=colors, pch=plotchar, lty=linetype, title="rvore") Histograma set.seed(12345) #gera sempre o mesmo conjunto de dados (semente) y1<-rnorm(50,150,20) # Primeira simulao y2<-rnorm(50,100,20) # Segunda simulao hist(y1, main="Histograma de y1", ylab=" Frequncia", xlab="Varivel y1") #vamos comparar os dois grficos na mesma janela par(mfrow=c(1,2)) # Dividir a janela dos grficos em uma linha e duas colunas hist(y1, xlim=c(50,200), ylab=" Frequncia") hist(y2, xlim=c(50,200), ylab=" Frequncia") par(mfrow=c(1,1)) notas4=data.frame(GrupoA=c(36,51,52,56,61,65,65,67,74,76,82,89),GrupoB=c(41,43,55,61,62,63,67,68,74, 79,79,82)) par(mfrow=c(1,2)) color=c("red") hist(notas4$GrupoA,main="GrupoA",xlab="notas",ylab="frequncia",col.main=color) color=c("blue") hist(notas4$GrupoB,main="GrupoB",xlab="notas",ylab="frequncia",col.main=color) par(mfrow=c(1,1)) # velocidade de veculos que passaram na Av Duque de Caxias em 15-03-2004. vel=c(21,21,21,22,23,24,29,30,30,30,31,32,32,33,34,34,34,34,34,35,35,35,36,37,38,38,38,38,38,38,39,39,40 ,41,43,43,43,43,44,44,44,45,45,46,46,47,47,47,48,49,49,50,50,50,51,51,51,51,53,53,53,55,56,56,57,57,58,5 8,58,60,60,60,61,61,62,62,62,62,63,63, 63,63,64,64,64,64,65,65,66,66,67,68,68,68,70,70,70,71,71,75) hist(vel,main="Velocidade de 100 veculos \n Av Duque de Caxias - 15-0304",xlab="Classes",ylab="Frequncias",labels=T,col="4",sub="Fonte:PRF") Grfico de Ramos e Folhas stem(y1) stem(y2)
Box-plot
set.seed(12345) #gera sempre o mesmo conjunto de dados (semente) y1<-rnorm(50,150,20) # Primeira simulao y2<-rnorm(50,100,20) # Segunda simulao boxplot(y1,main="Ttulo", xlab="Varivel y1") par(mfrow=c(1,2)) boxplot(y1,y2 ) #ou boxplot(y1,y2 ,notch=TRUE) # veja como muda o grfico par(mfrow=c(1,1))
notas=data.frame(GrupoA=c(8,51,52,56,61,63,65,67,74,76,82,89),GrupoB=c(41,43,55,61,62,63,67,68,74,79 ,79,82)) par(mfrow=c(2,2)) color=c("red","blue") boxplot(notas,col=color) notas2=data.frame(GrupoA=c(51,52,56,61,63,65,67,74,76,82,89),GrupoB=c(43,55,61,62,63,67,68,74,79,79, 82)) boxplot(notas2,col=color) notas3=data.frame(GrupoA=c(39,51,52,56,61,63,65,67,74,76,82,89),GrupoB=c(41,43,55,61,62,63,67,68,74, 79,79,82)) boxplot(notas3,col=color) notas4=data.frame(GrupoA=c(36,51,52,56,61,65,65,67,74,76,82,89),GrupoB=c(41,43,55,61,62,63,67,68,74, 79,79,82)) boxplot(notas4,col=color) par(mfrow=c(1,1))
pessoas<-data.frame(notasA=c(37, 28, 19,30, 21, 22, 23, 24, 25, 26), notasB=c(65,79,68,69,27,67,67,66,52,42)) boxplot(pessoas$notasA, pessoas$notasB )
Grfico de Pareto O grfico de Pareto pode ser construdo tanto para efeitos como para causas, cujo objetivo destacar os nveis prioritrios da varivel estudada. As variveis so, normalmente, expressas em nmero de ocorrncias ou em unidades monetrias. Como exemplo, considere que uma indstria girou o ciclo PDCA com o objetivo de diminuir o nmero de televisores defeituosos. A amostragem foi feita sobre a produo de um ms de acordo os tipos de defeitos e estratificada em funo dos locais 1 e 2 de produo. No estudo, foram analisadas duas variveis: nmero de ocorrncia de cada tipo de defeito e custo devido ao tipo de defeito. dados= data.frame(local=gl(2,5), defeito=c("def.A", "def.B", "def.C","def.D","def.E","def.A","def.B","def.C","def.D","def.E"),ocorrencias=c(15,12,6,4,7,6,16,12,6,2), custo=c(30,60,120,40,25,12,80,240,60,15)) library(qcc) # Ativar o pacote qcc. Instale-o, caso no tenha em sua mquina. names(dados$ocorrencias)<- dados$defeito # Atribuir os nomes dos t ratamentos aos valores de Y par(mfrow=c(1,2)) # Ver os dois grficos na mesma janela pareto.chart(dados$ocorrencias [dados$local==1], las=1)
pareto.chart(dados$ocorrencias [dados$local==2], las=1) par(mfrow=c(1,1)) Diagrama de causa e efeito library(qcc) # Ativar o pacote qcc cause.and.effect(cause = list(Mtodo.de.foto.cpia = c("Colocao do Original", "Tempo de secagem"), Liquido = c("Qualidade", "Qualidade quando novo", "Sujeira"), Papel.de.cpia = c("Qualidade do papel", "Foto sensibilidade"), Condies.ambientais = c("Mesa suja", "Mos sujas"), Papel.original = c("Dobras", "Nitidez", "Transparncia"), Copiadora = c(" Velocidade", "Condies do enrolamento", "Potncia da lmpada")) , effect = " Cpia de m qualidade", cex = c(1.2, 1.0, 1.5)) #maximize a janela do grfico para ver melhor
library(psych) #instale o pacote caso no tenha em sua mquina describe(mtcars$mpg) Sumrio por grupos library(psych) describe.by(mtcars$mpg, mtcars$cyl) pessoas<-data.frame(nomes=c("Adriano","Pedro","Joana","Mario", "Cintia","Maria","Antonio","Marta","Jos","Joo") , sexo=c("m","m","f","m","f","f","m","f","m","m") , idade=c(17, 18, 19, 20, 21, 22, 23, 24, 25, 26), altura=c(1.65,1.70,1.68,1.69,1.71,1.67,1.67,1.66,1.72,1.73)) describe.by(pessoas$altura, pessoas$sexo) # outra forma, usando outro pacote library(doBy) summaryBy(mpg ~ cyl , data = mtcars, FUN = function(x) { c(media = mean(x), desvio.padro = sd(x)) } ) # produces mpg.m wt.m mpg.s wt.s for each combination of the levels of cyl and vs
milsa <- read.delim("clipboard", dec="." ,header=TRUE) A planilha ainda no est pronta. Precisamos informar para o programa que as variveis: civil, instruo e regio, NO so numricas e sim categricas. milsa$Est.civil <- factor(milsa$Est.civil) milsa$Regio <- factor(milsa$Regio) milsa$Instruo <- ordered(milsa$Instruo, levels = c("1o Grau", "2o Grau", "Superior")) milsa Agora que os dados esto prontos podemos comear a anlise descritiva. Inspecionem os comandos a seguir. Alm disto, precisamos definir uma varivel nica idade a partir das variveis Ano e Ms que foram digitadas. Para gerar a varivel idade (em anos) fazemos: milsa$Idade <- milsa$Ano + milsa$Ms/12 milsa$Idade milsa is.data.frame(milsa) # conferindo se um data-frame names(milsa) # vendo o nome das variveis dim(milsa) # vendo as dimenses do data-frame #para facilitar o uso dos dados podemos usar o comando attach( ). Veja attach(milsa) # anexando ao caminho de procura. # Tanto faz digitar: milsa$Idade #ou Idade
## A seguir so apresentadas algumas possibilidades de uso da Estatstica Descritiva #Variveis: Funcionrio Est.civil Instruo ## Anlise Univariada ## ## 1. Varivel Qualitativa Nominal Est.civil is.factor(Est.civil) ## 1.1 Tabela: Est.civil.tb <- table(Est.civil) Est.civil.tb ## ou em porcentagem 100 * table(Est.civil)/length(Est.civil) ## ou ento prop.table(Est.civil.tb) ## 1.2 Grfico pie(table(Est.civil)) ## 1.3 Medidas ## encontrando a moda Est.civil.mo <- names(Est.civil.tb)[Est.civil.tb == max(Est.civil.tb)] Est.civil.mo Filhos Salrio Ano Ms Regio
## 2 Qualitativa Ordinal Instruo is.factor(Instruo) ## 2.1 Tabela: Instruo.tb <- table(Instruo) Instruo.tb prop.table(Instruo.tb) ## 2.2 Grfico: barplot(Instruo.tb) ## 2.3 Medidas Instruo.mo <- names(Instruo.tb)[Instruo.tb == max(Instruo.tb)] Instruo.mo median(as.numeric(Instruo)) # s calcula mediana de variveis numricas levels(milsa$Instruo)[median(as.numeric(milsa$Instruo))] ## 3 Quantitativa discreta Filhos ## 3.1 Tabela: Filhos.tb <- table(Filhos) Filhos.tb Filhos.tb/sum(Filhos.tb) # frequncias relativas ## 3.2 Grfico: plot(Filhos.tb) # grfico das frequncias absolutas Filhos.fac <- cumsum(Filhos.tb) Filhos.fac # frequncias acumuladas plot(Filhos.fac, type="s") # grfico das frequncias acumuladas ## 3.3 Medidas ## De posio Filhos.mo <- names(Filhos.tb)[Filhos.tb == max(Filhos.tb)] Filhos.mo # moda Filhos.md <- median(Filhos, na.rm=T) Filhos.md # mediana Filhos.me <- mean(Filhos, na.rm=T) Filhos.me # mdia ## Medida de disperso range(Filhos, na.rm=T) diff(range(Filhos, na.rm=T)) # amplitude Filhos.dp <- sd(Filhos, na.rm=T) # desvio padro Filhos.dp var(Filhos, na.rm=T) # varincia 100 * Filhos.dp/Filhos.me # coeficiente de variao
Filhos.qt <- quantile(Filhos, na.rm=T) Filhos.qt[4] - Filhos.qt[2] # amplitude interquartlica summary(Filhos) # vrias medidas
## 4. Quantitativa Contnua Salrio ## 4.1 Tabela range(Salrio) # mximo e mnimo nclass.Sturges(Salrio) # nmero de classes pelo critrio de Sturges args(cut) # ver os argumentos de uma funo args(cut.default) # ver os argumentos padro de uma funo table(cut(Salrio, seq(3.5,23.5,len=8))) ## 4.2 Grfico hist(Salrio) hist(Salrio, br=seq(3.5,23.5,len=8)) boxplot(Salrio) stem(Salrio) ## 4.3 Medidas ## De posio Salrio.md <- median(Salrio, na.rm=T) Salrio.md # mediana Salrio.me <- mean(Salrio, na.rm=T) Salrio.me # mdia ## Medida de disperso range(Salrio, na.rm=T) diff(range(Salrio, na.rm=T)) # amplitude Salrio.dp <- sd(Salrio, na.rm=T) # desvio padro Salrio.dp var(Salrio, na.rm=T) # varincia 100 * Salrio.dp/Salrio.me # coeficiente de variao Salrio.qt <- quantile(Salrio, na.rm=T) Salrio.qt[4] - Salrio.qt[2] # amplitude interquartlica summary(Salrio) # vrias medidas
## ## Anlise Bivariada ## ## 1. Qualitativa vs Qualitativa ## Ex. estado civil e grau de instruo ## 1.1 Tabela civ.gi.tb <- table(Est.civil, Instruo) # frequncias absolutas civ.gi.tb civ.gi.tb/as.vector(table(Est.civil)) # frequncias por linha ## 1.2 Grfico
## 2. Qualitativa vs Quantitativa ## Ex. grau de instruo vs salrio ## 2.1 Tabela quantile(Salrio) ins.sal.tb <- table(Instruo, cut(Salrio, quantile(Salrio))) ins.sal.tb ## 2.2 Grfico plot(Instruo, Salrio) plot(Salrio, Instruo) ## 2.3 Medidas ## calculando as mdias para cada grau de instruo tapply(Salrio, Instruo, mean) ## e as varincias tapply(Salrio, Instruo, var) ## e ainda os mnimo, mximo e quartis tapply(Salrio, Instruo, quantile) ## 3. Quantitativa vs Quantitativa ## Ex. salrio e idade ## 3.1 Tabela table(cut(Idade, quantile(Idade)), cut(Salrio, quantile(Salrio))) table(cut(Idade, quantile(Idade, seq(0,1,len=4))), cut(Salrio, quantile(Salrio, seq(0,1,len=4)))) ## 3.2 Grfico plot(Idade, Salrio) ## 3.3 Medidas cor(Idade, Salrio) detach(milsa) # desanexando do caminha de procura
Escreva um relatrio contendo uma anlise descritiva dos dados. Modelo de Relatrio: Ttulo: ______________________________________________________________________________ Introduo: Deve dar ao leitor a informao necessria para entender de que assunto trata o seu trabalho, sem precisar recorrer a outras fontes. Para escrev-la, as seguintes perguntas devero ser respondidas: 1) De que assunto trata o seu trabalho? 2) Por que importante tratar esse assunto? 3) Como tratou o assunto? 4) Qual o seu objetivo? Desenvolvimento: 5) Populao, amostra, V.A., Tipo de V.A. Clculo de medidas Sumrio Estatstico Faixas Etrias Medidas 18 a 25 26 a 33 34 a 39 Mdia Varincia Desvio padro
Coef de assimetria Mediana Mnimo 1o. quartil 3o. quartil Mximo Coeficiente de variao Discusso: o captulo em que voc explica seus resultados. Voc dever abordar os seguintes tpicos: 6) Comparar as medidas de tendncia central e o desvio padro das trs amostras. 7) Analisar a assimetria considerando os resultados das medidas de tendncia central (mdia, mediana e moda) e o coeficiente de assimetria. 8) Justificar o uso do coeficiente de variao (CV) e comentar sobre os resultados obtidos. 9) Comparar as separatrizes entre as amostras considerando as seguintes metas: a) No mais do que 30% tenham ndice inferior a 2400 metros. b) Pelo menos 75% tenham ndice superior a 2900 metros 10) Comparar os trs histogramas, ou boxplots, indicando posio, variabilidade e forma. Concluso: As concluses decorrem da discusso, ou seja, at certo ponto, elas devem estar contidas no captulo de discusso. Ento, verifique se concluiu com base no que discutiu, havendo coerncia entre o objetivo proposto e a concluso alcanada. Fique atento para no se sentir possuidor da grande verdade, porque, afinal, voc tem apenas um fragmento de evidncia, uma vez que seu trabalho apenas descritivo e no inferencial. 11) Estabelea propostas com as concluses obtidas e atente para ser bastante claro ao estabelecer suas concluses.
obs: qualquer comando digitado aps o smbolo # no executado no R. obs: os arquivos utilizados no presente trabalho devem estar no "diretrio de trabalho" do R. Tal escolha pode ser feita alterando a opo File -> Change Dir... (barra de menu do R). Como proceder? 1) Copie os arquivos de dados para o "diretrio de trabalho" (crie o diretrio que deseja trabalhar no Windows). 2) Execute o programa R. 3) Selecione a opo File -> Change Dir... (barra de menu do R). 4) Clique no boto BROWSE e selecione a pasta que criou. obs: o R usa ponto no lugar de virgula ex: 32,8 -> 32.8 Ateno: Na construo de alguns grficos foram omitidos propositalmente seus elementos complementares (ttulo, fonte, etc).
#Vamos comear o trabalho... DICA: V copiando e colando as linhas de comando a seguir. # Entre com os valores do 1o Grupo. (logo aps o prompt >) g18a25 = c(3004, 3041, 3085, 3111, 3166, 3269, 3005, 3049, 3091, 3114, 3178, 3273, 3009, 3065, 3102, 3122, 3242, 3287, 3013, 3073, 3106, 3127, 3258, 3292, 3030, 3076, 3107, 3139, 3265, 3297) # vamos ver o contedo g18a25 g26a33=c(2808,2839,2889,2944,2979,3063,2816,2840,2902,2949,2992,3088,2832,2862,2908,2951,2999,30 90,2835,2863,2918,2953,3008,3098,2837,2889,2920,2966,3062,3100) g26a33
g34a39=c(2032,2264,2371,2490,2563,2700,2093,2269,2383,2510,2587,2705,2183,2316,2444,2517,2632,27 41,2206,2355,2456,2539,2650,2783, 2240,2369,2476,2540,2685,2800) g34a39 #criar um data.frame grupos=data.frame(g18a25 , g26a33 ,g34a39) # Clculo de medidas dos Grupos library(psych) #instale o pacote caso no tenha em sua mquina describe(grupos) # conhea este ndice de assimetria (conhecido por terceiro momento centrado na mdia) #vamos calcular fazendo calculus usando os vetores criados g18a25, g26a33, g34a39 sum((g18a25-mean(g18a25))^3)/(length(g18a25)*sd(g18a25)**3) sum((g26a33-mean(g26a33))^3)/(length(g26a33)*sd(g26a33)**3) sum((g34a39-mean(g34a39))^3)/(length(g34a39)*sd(g34a39)**3) #todas as separatrizes (percentis) quantile(grupos$g18a25,seq(0,1,0.01)) quantile(grupos$g26a33,seq(0,1,0.01)) quantile(grupos$g34a39,seq(0,1,0.01)) # sumrio (mnimo, Q1 ,mediana, Q3 ,mximo e mdia) summary(grupos) # construo de grficos boxplot(grupos) # grfico dos 5 pontos (mn, Q1 ,mediana, Q3 ,mx) boxplot(grupos,horizontal =T) hist(grupos$g18a25) # histograma com classes automticas hist(grupos$g26a33) hist(grupos$g34a39) #todos juntos na mesma tela par(mfrow=c(1,3)) # desenha at 3 grficos ao mesmo tempo na tela (1 linhas,3 colunas) hist(grupos$g18a25) # histograma com classes automticas hist(grupos$g26a33) hist(grupos$g34a39) par(mfrow=c(1,1)) #desfaz a tela para mltiplos grficos #se quiser escolher a quantidade de classes e amplitude, faa assim: hist(grupos$g18a25,breaks=c(3004,3053,3102,3151,3200,3249,3298),right=F) # histograma com classes especficas # vamos explorar mais um pouco os grficos! # vamos ver a capacidade de cor do R colors() # cores do R cores = colors() # guardado os nomes de cores em uma varivel pie(rep(1,30),c(cores[1:30]),col=c(cores[1:30]),radius=1) # algumas cores com seus nomes #usando a tabela de meno como referncia mencao18a25 = ifelse(g18a25 >= 3300, "E", ifelse(g18a25 >= 3100,"MB",ifelse(g18a25 >= 2600,"B",ifelse(g18a25 >= 2300,"R" ,"I")))) #classificar os dados como varivel qualitativa mencao18a25
tabmencao18a25=table(mencao18a25) # tabular os dados tabmencao18a25 # grfico atravs dos dados tabulados pie(tabmencao18a25,main="Meno dos corredores na corrida de 12 min \n Faixa etria 18 a 25 anos - Jan 2011", sub="Fonte: Escola de Treinamento Fsico" , col=c("red","blue")) mencao26a33 = ifelse(g26a33 >= 3000, "E", ifelse(g26a33 >= 2800,"MB",ifelse(g26a33 >= 2300,"B",ifelse(g26a33 >= 2000,"R" ,"I")))) mencao26a33 tabmencao26a33=table(mencao26a33) tabmencao26a33 tabmencao26a33/30 pie(tabmencao26a33,main="Meno dos corredores na corrida de 12 min \n Faixa etria 26 a 33 anos - Jan 2011", sub="Fonte: Escola de Treinamento Fsico") mencao34a39 = ifelse(g34a39 >= 2800, "E", ifelse(g34a39 >= 2600,"MB",ifelse(g34a39 >= 2100,"B",ifelse(g34a39 >= 1800,"R" ,"I")))) mencao34a39 tabmencao34a39=table(mencao34a39) tabmencao34a39 tabmencao34a39/30 pie(tabmencao34a39,main="Meno dos corredores na corrida de 12 min \n Faixa etria 34 a 39 anos - Jan 2011", sub="Fonte: Escola de Treinamento Fsico" col=c("orange","blue","red","green") )