apostila de introdução ao software r leoni
TRANSCRIPT
Apostila de
introdução
ao Software
R AEDB
Prof: Roberto C. Leoni
Professor: Roberto Campos Leoni
Statistical Data Analysis
Sumário Aula 1 – Instalando o Software R ...................................................................................................................................... 2
Por que usar o R? .......................................................................................................................................................... 2 Como obter o R? ........................................................................................................................................................... 2 Área de trabalho (The Workspace) ............................................................................................................................... 2 Atividades Propostas ..................................................................................................................................................... 4
Aula 2 – Aprenda a administrar a sua área de trabalho ................................................................................................... 5 Atividades Propostas ..................................................................................................................................................... 6
Aula 3 – Criando objetos no R: vetor ............................................................................................................................... 7 Criando vetores ............................................................................................................................................................. 7 Variáveis nominais e ordinais ....................................................................................................................................... 9 Atividades Propostas ..................................................................................................................................................... 9
Aula 4 – Criando objetos no R: matriz e array ............................................................................................................... 10 Criando Matrizes ......................................................................................................................................................... 10 Criando Array ............................................................................................................................................................. 12 Atividades Propostas ................................................................................................................................................... 12
Aula 5 – Criando objetos no R: data.frame e listas ........................................................................................................ 13 Criando Data frame ......................................................................................................................................................... 13
Entrando com dados através do teclado ...................................................................................................................... 14 Criando Lista ............................................................................................................................................................... 14 Atividades Propostas ................................................................................................................................................... 15
Aula 6 – Packages (pacotes) e importação de dados ...................................................................................................... 16 Como instalar novos Packages? .................................................................................................................................. 16 Importação de dados ................................................................................................................................................... 16 Atividades Propostas ................................................................................................................................................... 17
Aula 7 – Tabelas de frequência (contagem).................................................................................................................... 18 Tabulação cruzada ...................................................................................................................................................... 18
Aula 8 – Gráficos ............................................................................................................................................................. 20 Setor (“pizza”) ............................................................................................................................................................ 20 Coluna (barras) ............................................................................................................................................................ 21 Gráfico de colunas (barras) para tabelas cruzadas (dupla entrada) ............................................................................. 22 Dot Plots...................................................................................................................................................................... 22 Gráfico de linha (temporal) ......................................................................................................................................... 23 Histograma .................................................................................................................................................................. 25 Gráfico de Ramos e Folhas ......................................................................................................................................... 25 Box-plot ...................................................................................................................................................................... 25 Gráfico de Pareto ........................................................................................................................................................ 26 Diagrama de causa e efeito ......................................................................................................................................... 27
Aula 9 – Medidas numéricas ........................................................................................................................................... 28 Medidas: média e mediana .......................................................................................................................................... 28 Medidas: sumário ....................................................................................................................................................... 28 Medidas: percentis ...................................................................................................................................................... 28 Medidas: assimetria, curtose ....................................................................................................................................... 28 Sumário por grupos ..................................................................................................................................................... 29
Aula 10 – Descrevendo um conjunto de dados .............................................................................................................. 30 Aula 11 – Projeto prático ................................................................................................................................................ 35
Professor: Roberto Campos Leoni
Aula 1 – Instalando o Software R O R é uma linguagem e ambiente de computação estatística e construção de gráficos; é considerada
uma variante da linguagem S (laboratórios Bell, desenvolvida por John Chambers e seus colegas). Surge
pela criação da R Foundation for Statistical Computing, com o objetivo de criar uma ferramenta gratuita e
de utilização livre, para análise de dados e construção de gráficos.
O software estatístico R trouxe novas formas de explorar a Estatística proporcionando maior rapidez
na resolução de problemas. Este programa conquistou vários adeptos no meio acadêmico, empresarial e
administrativo que desta forma puderam passar a utilizar a Estatística como uma ferramenta eficaz na
resposta aos seus problemas.
O R é compatível com diversas plataformas: UNIX, Windows e MaCOS e permite a ligação a
interfaces de diferentes formatos: Excel, Access, SPSS, SAS, SQL Server. Sendo Open Source, permite ao
utilizador alterar funcionalidades existentes, bem como criar novas funcionalidades para responder aos seus
problemas específicos de forma mais eficaz.
A interação com o utilizador é baseada numa janela de comandos e exige o recurso da programação,
embora existam packages gráficos que permitem a interação através de menus.
Por que usar o R?
1. O programa computacional R é gratuito e pode ser utilizado para análises estatísticas.
2. Roda em várias plataformas: Windows, Unix e MacOS.
3. Contém rotinas básicas e avançadas disponíveis em pacotes.
4. Possui grande capacidade gráfica.
Como obter o R?
A instalação do R é gratuita e pode ser feita diretamente a partir da página principal do R Project for
Statistical Computing em http://cran.r-project.org/. Esta área é conhecida como Comprehensive R Archive
Network (CRAN). Veja na figura 1 a tela inicial do Site.
Figura 1: Site: http://cran.r-project.org/
Á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
funções).
No final da sessão o usuário pode salvar tudo o que fez e na próxima vez em que for usar o R basta
recarregar a área de trabalho já salva.
Os comandos são executados através do prompt da área de trabalho.
Figura 2: Workspace do R
Professor: Roberto Campos Leoni
Inicialmente vamos mostrar o R como calculadora. Por exemplo, tente fazer uma adição simples:
> 3 + 5 # digite 3 + 5 no prompt!
> # Obs: tudo o que aparece depois do símbolo # é reconhecido como texto e não é executado pelo R.
[1] 8 # olhe o resultado.
Vamos praticar com outros exemplos:
> 2 + 3*4 # prioridade da operação multiplicação
[1] 14
> 3/2+1 # prioridade da operação divisão
[1] 2.5
> 2 * 3 ^ 2 # potências são indicadas por ^ ou **
[1] 18
Principais funções 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 funções e operadores aritméticos:
Função Descrição Operadores Descrição
sqrt( ) raiz quadrada + adição
abs( ) valor absoluto - subtração
exp( ) exponencial de base “e” * multiplicação
log10( ) logaritmo na base 10 / divisão
log( ) logaritmo na base “e” ** ou ^ potência
sin()cos() tan() funções trigonométricas
asin( ) acos( ) atan( ) funções trigonométricas
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
Professor: Roberto Campos Leoni
Para pedir ajuda ao R, por exemplo, para a raiz quadrada, digite uma das opções:
> help(sqrt)
> ?sqrt
Atividades Propostas
1. Faça o download da versão mais recente do R para Windows (2.14.X);
2. Faça a instalação do programa em sua máquina;
3. Abra o programa clicando no ícone do R;
4. Reconheça 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!
Professor: Roberto Campos Leoni
Aula 2 – Aprenda a administrar a sua área de trabalho Para manter diferentes projetos é preciso saber administrar área de trabalho.
ATENÇÃO: USUÁRIO DO WINDOWS.
O R interpreta "\" com espaço, logo não é possível usar a notação padrão para diretório, Por
exemplo: c:\mydocuments\myfile.txt.
Portanto, devemos usar c:\\my documents\\myfile.txt ou c:/mydocuments/myfile.txt
Alguns comandos para administrar a área de trabalho:
DICA: Digite os comandos a seguir no prompt do R e acompanhe os resultados em sua tela.
getwd() # apresenta o diretório corrente. Tudo o que fizer será salvo aqui.
Ex:
> getwd()
[1] "c:/Users/Usuário/Documents" veja o resultado do comando!
Para mudar a área onde deseja salvar seus dados primeiro crie o diretório no Windows e depois mude
o local de trabalho. Veja como se faz:
> dir.create('c:/estatistica')
> setwd("c:/estatistica") # muda o diretório de trabalho para c:/estatistica.
> getwd() # veja o novo diretório de trabalho.
[1] "c:/estatistica"
IMPORTANTE: caso o diretório não seja criado com o comando dir.create(), primeiro crie o
diretório no Windows (faça isso fora do R).
Para ilustrar como podemos salvar o que fazemos no R, vamos usar a forma mais simples para
armazenar informação no R. Imagina que suas notas na disciplina foram: 8, 5 , 6 e 9.
> notas=c(8,5,6,8)
> notas
[1] 8 5 6 8
Veja o que há armazenado na área de trabalho.
ls() # lista objetos da área de trabalho
Todos os objetos criados podem ser salvos permanentemente em um arquivo denominado .RData, no
diretório de trabalho do R. Veja:
> save.image() # salva o workspace em arquivo do tipo .RData no diretório de trabalho corrente.
> dir() # veja os arquivos que existem no diretório
E para carregar o que foi salvo em outro momento, faça:
Obs: Supomos aqui que você saiu do R e voltou em outro momento. Lembre-se que o arquivo foi salvo no
diretório "c:\\estatistica\\.RData" .
> load("c:\\estatistica\\.RData")
Podemos ainda salvar somente o histórico dos comandos utilizados.
> savehistory(file="meuscomandos") # salvar os comandos utilizados - default é ".Rhistory"
> loadhistory(file=" meuscomandos ") # carregar na área de trabalho comandos salvos - default é
".Rhistory"
Professor: Roberto Campos Leoni
Atividades Propostas
1. Crie o seu diretório.
2. Mude a área de trabalho do R para o diretório 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!
Professor: Roberto Campos Leoni
Aula 3 – Criando objetos no R: vetor
O R é uma linguagem orientada a objetos. Um objeto para o R significa tanto um banco de dados,
como uma tabela, variáveis, vetores, matrizes, funções, etc., armazenados na memória ativa do computador.
Para criar um objeto qualquer no R, você deverá sempre usar o operador de atribuição ‘“<-“ , gerado
pela digitação do sinal de menor e menos. É possível usar também o sinal de igualdade, ou seja, =.
DICAS:
Uma das regras importantes do R é o fato de ser case sensitive. Por esta razão as letras ‘a’ e ‘A’
podem corresponder a diferentes variáveis.
O R ignora espaços, ou seja, os resultados ‘8+3’ e ‘8+ 3’ dão origem exatamente ao mesmo
resultado.
Podemos agrupar comandos, para serem executados em simultâneo, se estiverem entre chaves ‘{ }’
e separados por ‘;’
O ‘#’ é utilizado para comentários;
Quando um comando não está completo, o R coloca o sinal de ‘+’ na linha seguinte, permitindo que
este seja terminado.
Saber as diferenças entre os diversos tipos de objetos é importante para um uso mais adequado do R.
Apresentaremos a partir desta aula os objetos: vetor, matriz, data.frame, array e listas. Cada cubo da Figura 3
representa um ‘espaço/posição’ em que um dado será armazenado.
Figura 3: Objetos do R
Criando vetores
Vetores são 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", "três")
> b
[1] "um" "dois" "três"
> 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 estão na posição 1, 3 e 5
[1] 1 5 6
> a[2:6] # valores de 2 a 6
[1] 2 5 3 6 -2
Usando a função scan() para criar um vetor
Professor: Roberto Campos Leoni
> 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 vírgula. 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 opções. 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 operações aritméticas com vetores, elemento a elemento, caso estes tenham a
mesma dimensão. 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?
2altura
pesoi.m.c .
Professor: Roberto Campos Leoni
> 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’ são diferentes:
> data.class(a)
[1] "numeric"
> data.class(b)
[1] "character"
> data.class(c)
[1] "logical"
Variáveis nominais e ordinais
No R uma variável é reconhecida como nominal usando-se o a função factor(). Para variáveis
ordinais, usa-se o comando ordered( ). Vejam os exemplos:
# uso do comando fator()
# variável 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", "médio", "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 variável que contenha 100 dados qualitativos.
7. Use o comando factor() para transformá-lo em qualitativo.
8. Crie um exemplo usando o comando ordered()
Professor: Roberto Campos Leoni
Aula 4 – Criando objetos no R: matriz e array Criando Matrizes
Em uma matriz os elementos são organizados em duas dimensões (linhas e colunas). Todas as
colunas possuem o mesmo de dados (numérico, caracter, etc.) e o mesmo tamanho. Usaremos o comando
matrix
> y<-matrix(1:20, nrow=5,ncol=4) #nrow = número de linhas e ncol=número de colunas
> y
[,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
> valores <- c(1,26,24,68)
> nomelinhas <- c("R1", "R2")
> nomecolunas <- c("C1", "C2")
> minhamatriz<- matrix(valores, nrow=2, ncol=2, byrow=TRUE, dimnames=list(nomelinhas,
nomecolunas))
> minhamatriz
C1 C2
R1 1 26
R2 24 68
Outras formas de criar uma matriz
Suponha que você tenha as notas de cinco alunos em três provas em uma determinada disciplina.
Aqui, as linhas representam os alunos e as colunas representam as notas das provas
p1 p2 p3
7.5 6.9 8.2
8.1 7.3 6.7
5.9 6.8 9.0
7.8 7.0 7.5
8.8 7.9 6.4
# Entrada da matriz diretamente pelo comando scan()
notas.matrix<-matrix(scan(), ncol=3, byrow=T)
7.5 6.9 8.2 8.1 7.3 6.7 5.9 6.8
9.0 7.8 7.0 7.5 8.8 7.9 6.4
> notas.matrix
[,1] [,2] [,3]
[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
Observe que o preenchimento da matriz foi feito por linhas, ou seja, byrow=T.
Assim como nos vetores, uma matriz pode ser criada usando-se a função c() para combinar os
valores:
# Empregando o comando c()
notas.matrix<-matrix(c(7.5,6.9,8.2,8.1,7.3,6.7,5.9,6.8,
9.0,7.8,7.0,7.5,8.8,7.9,6.4), ncol=3, byrow=T)
Criando matrizes usando a função “rbind” e “cbind”
Professor: Roberto Campos Leoni
Uma matriz também pode ser construída pela combinação de dois ou mais vetores de mesmo
comprimento (length). Do exemplo anterior, usando a função 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 função 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, faça:
> # 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")
Professor: Roberto Campos Leoni
> # 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 é possível visualizar um elemento (ou um grupo de
elementos) contido numa matriz. A lógica é 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 são
organizados em duas dimensões (linhas e colunas), em um array os elementos podem ser organizados em
um número arbitrário de dimensões. Para maiores detalhes consulte help(array).
Atividades Propostas
1. Crie a matriz e execute os comandos a seguir: x <- matrix(1:10, nrow = 2)
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. Não 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).
Professor: Roberto Campos Leoni
Aula 5 – Criando objetos no R: data.frame e listas Criando Data frame
Um data.frame (folha de dados) é uma estrutura na forma de uma tabela, na qual as colunas
representam variáveis (como idade, sexo, nome, etc.) e as linhas representam as observações.
Vetores, matrizes e arrays forçam todos os elementos a serem do mesmo tipo, i.e., numérico ou
caracter. O data-frame é uma estrutura semelhante à uma matriz porém com cada coluna sendo tratada
separadamente. Desta forma podemos ter colunas de valores numéricos e colunas de caracteres no mesmo
objeto. Note, entretanto, que dentro de uma mesma coluna todos os elementos ainda serão forçados a serem
do mesmo tipo.
# Cria uma tabela (objeto denominado pessoas)
> pessoas<-data.frame(nomes=c("Adriano","Pedro","Joana","Mario",
"Cintia","Maria","Antonio","Marta","José","João"), 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))
# Lista a tabela (objeto)
> pessoas
nomes sexo idade altura
1 Adriano m 17 1.65
2 Pedro m 18 1.70
3 Joana f 19 1.68
4 Mario m 20 1.69
5 Cintia f 21 1.71
6 Maria f 22 1.67
7 Antonio m 23 1.67
8 Marta f 24 1.66
9 José m 25 1.72
10 João m 26 1.73
# Lista o número de variáveis (colunas)
length(pessoas)
# Mostra o nome das colunas
names(pessoas)
# Mostra a classe do objeto
class(pessoas)
# Mostra que a variável sexo é um fator
class(pessoas$sexo)
# Mostra a numeração das linhas
row.names(pessoas)
Outro exemplo:
O R vem com vários 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 são as variáveis?
Professor: Roberto Campos Leoni
[1] "Sepal.Length" "Sepal.Width" "Petal.Length" "Petal.Width" "Species"
Dica:
A descrição dessas variáveis são:
• Sepal.Length – Tamanho da sépala
• Sepal.Width – Largura da sépala
• Petal.Length – Tamanho da pétala
• Petal.Width – Largura da pétala
• Species – Espécie observada
Entrando com dados através do teclado
Uma opção 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 variável ou algum valor digitado errado?
pessoas<-data.frame(nomes=c("Adriano","Pedro","Joana","Mario",
"Cintia","Maria","Antonio","Marta","José","João"), 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 flexível 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 numérico com
10 valores e uma matriz de ordem 4 x 4.
Exemplo
Vamos construir e explorar uma lista com os dados de uma família: nome do pai, da mãe, número 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
Professor: Roberto Campos Leoni
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,]
Professor: Roberto Campos Leoni
Aula 6 – Packages (pacotes) e importação de dados Pacotes são coleções de funções, dados e códigos compilados que ficam armazenados em um lugar
chamado library. Alguns pacotes básicos já são automaticamente instalados com o R, porém outros precisam
ser instalados caso tenha necessidade. Depois da instalação, para usá-los, é necessário carregar tais pacotes
na área de trabalho.
> .libPaths() # local do library em sua máquina.
> library() # veja os pacotes instalados em sua máquina.
> search() # veja os pacotes que estão em uso na area de trabalho
Como instalar novos Packages?
Existe uma lista com todos os pacotes no site: http://cran.r-project.org/web/packages/
Para instalar um pacote basta acessar o botão no menu do R ou digitar o comando:
> install.packages()
Para usar um pacote, depois de instalado, basta usar o comando:
> library (nomedopacote)
Dica: O pacote denominado Rcmdr cria uma interface gráfica para usar o R, ou seja, ele disponibiliza
botões (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
Importação 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 é através da área de transferência (clipboard ou o famoso ctrl + c)
através da seguinte função: read.delim("clipboard",dec=",",header=T). “clipboard” indica que os dados
estão na área de transferência, dec=“,” que é utilizada a vírgula como separador decimal e header=T que a
primeira linha contém títulos das colunas.
Considere que em uma planilha você tem os dados
A B Sexo
186 81,0 M
192 88,7 F
195 78,4 M
197 101,2 F
199 77,6 M
199 92,3 M
200 90,3 M
200 91,3 M
202 87,6 M
Selecione a área da planilha com os dados e copie (Ctrl C). No prompt do R escreva (não copie o
comando a seguir porque assim os dados sairão da memória):
> dados <- read.delim("clipboard", dec="," ,header=TRUE) # Os dados serão armazenados em dados.
> dados
Professor: Roberto Campos Leoni
É muito comum encontrar arquivos com dados no formato Excel ou Calc. Nesse caso, se salvarmos o
arquivo com a extensão *.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 diretório 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
Professor: Roberto Campos Leoni
Aula 7 – Tabelas de frequência (contagem) Pode-se gerar tabelas usando a função table( ), tabelas com proporções usando prop.table( ) e
frequências marginais usando margin.table( ).
Variável aleatória (VA) qualitativa nominal
# VA Sexo
sexo = c("m","f","m","m","m","m","f","f","m","m","m","m","f","f","m","f","m","m","m","m","m","m","m")
table (sexo)
# ou ainda
sexo <- factor(sexo)
summary(sexo)
Variável aleatória (VA) qualitativa ordinal
tamanho = c("p", "g", "p", "m", "p", "g", "p", "g", "m")
table(tamanho)
#ou ainda
tamanho = factor(tamanho)
summary(tamanho)
# levando-se em conta a ordem de grandeza
tamanho.ord = ordered(tamanho, levels = c("p", "m", "g"), labels = c("pequeno", "médio", "grande"))
summary(tamanho.ord)
# ou
table(tamanho.ord)
VA quantitativa discreta ou VA quantitativa contínua
#VA Distância percorrida, em metros, durante 12 minutos. Alunos de 18 a 25 anos.
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 classificar de acordo com o quadro:
Faixa Etária / Menção E MB B R I
18 a 25 >3299 3100 a 3299 2600 a 3099 2300 a 2599 <2300
mencao18a25 = ifelse(g18a25 >= 3300, "E", ifelse(g18a25 >= 3100,"MB",ifelse(g18a25 >=
2600,"B",ifelse(g18a25 >= 2300,"R" ,"I"))))
tabmencao18a25=table(mencao18a25)
tabmencao18a25
Outra forma: Juntando o comando table() com o comando cut(). Para ver a sintaxe completa e outras
possibilidades digite ?cut no R. Esta é a maneira mais fácil de criar distribuições de frequências com classes
de valores.
table(cut(g18a25, breaks=4, include.lowest = TRUE, right = FALSE, dig.lab = 4))
# outro exemplo
table(cut(g18a25, breaks=c(3000,3100,3200,3300), include.lowest = TRUE, right = FALSE, dig.lab = 4))
Tabulação cruzada
Quando há o interesse em obter informações cruzadas, típicas para tabelas com dupla entrada,
façamos assim:
sexo = c(rep("masculino ",25), rep("feminino ", 27))
sexo
evasao = c(rep("saúde ",4), rep("interesse próprio", 15), rep("reprovação", 33) )
Professor: Roberto Campos Leoni
evasao
tabela = table(sexo,evasao)
margin.table (tabela)
margin.table(tabela, 1) # total por sexo
margin.table(tabela, 2) # total por evasão
prop.table(tabela)
prop.table(tabela, 1) # por linha
prop.table(tabela, 2) # por coluna
# com três variáveis cruzadas
idade = c(rep("jovem",19), rep("idoso", 33) )
tabela<- table(sexo,evasao, idade)
ftable(tabela) #ftable apresenta uma saída 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é","João"), 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 símbolo $ acessa os dados de uma coluna específica
# por exemplo, pessoas$sexo indica que queremos a variável 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("saúde ",4), rep("interesse próprio", 15), rep("reprovação", 23) )
evasao
CrossTable(sexo,evasao)
Professor: Roberto Campos Leoni
Aula 8 – Gráficos
Algumas configurações para construir gráficos são controladas pela função par(). Veja o quadro com
algumas funções disponíveis.
mfrow divide a janela onde os gráficos serão construídos, cujo valor é do tipo c(nl, nc), em
que nl é o número de linhas e nc o número de colunas em que a janela será dividida
ps controla o tamanho de todos os textos nos gráficos, cujo valor deve ser um
número inteiro
bg controla a cor de fundo da janela dos gráficos. Vejas as cores com o comando
colors()
fg controla a cor dos eixos e das bordas dos símbolos dos gráficos
col.main,
col.lab,
col.sub,
col.axis
controla as cores do título, dos nomes dos eixo, do rodapé e dos valores dos eixos,
respectivamente
cex.main,
cex.lab,
cex.sub,
cex.axis
controla o tamanho da fonte, do título, dos nomes dos 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
font.main,
font.lab,
font.sub,
font.axis
controla a fonte a ser usada, com base em números inteiros de 1 a 20, sendo que o
número 1 indica texto normal, o 2 negrito, o 3 itálico e o 4 negrito + itálico
Exemplos:
par(mfrow=c(1,2)) # Dividir a janela dos gráficos 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é","João") , 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")
Professor: Roberto Campos Leoni
# 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="Frequência")
# velocidade de veículos 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 variável qualitativa
vel2=ifelse(vel<=36,"veloc baixa",ifelse(vel<=44,"veloc normal","veloc alta"))
vel2
vel.tab=table(vel2) #tabulando os dados
vel.tab
# gráfico de coluna
barplot(vel.tab,col=c(4,2,5),legend.text=T,main="Velocidade de 100 veículos \n Av Duque de Caxias - 15-
03-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 produção 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
produção = dados$produção
nomes = dados$cat
names(produção) <- nomes
barplot(produção, main="Título…….", col.main=c("red"))
Outros exemplos:
counts <- table(mtcars$gear)
barplot(counts, main="Car Distribution", xlab="Number of Gears")
Professor: Roberto Campos Leoni
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)
Gráfico de colunas (barras) para tabelas cruzadas (dupla entrada)
Copie o quadro (ctrl + c) a seguir e digite:
va <- read.delim("clipboard",row.names=1)
G1 G2 G3
Local C 3 30 70
Local B 10 80 30
Local A 50 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 frequência relativa: prop.table(as.matrix(va),2)
para barras justapostas: beside=T
para barras horizontais: horiz=T
adiciona uma linha abaixo das barras (Opção 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.
Professor: Roberto Campos Leoni
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 variável mpg, agrupar e colorir pela variável 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)
Gráfico de linha (temporal)
O comando plot(x, y) produz o gráfico. Função lines( ) adiciona linha ao gráfico.
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 elétrica no 1o. sem de 2003 e 2004 no período fora da ponta (horário 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 gráficos de linha ou tendência
plot(sem1.2003,type="b",main="Consumo de energia elétrica (fora da ponta)\n 1º Sem 2003
",xlab="meses",ylab="consumo")
plot(sem1.2004,type="b",main="Consumo de energia elétrica (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 elétrica (fora da ponta)\n 1º Sem 2003
",xlab="meses",ylab="consumo")
plot(sem1.2004,type="b",main="Consumo de energia elétrica (fora da ponta)\n 1º Sem 2004
",xlab="meses",ylab="consumo")
par(mfrow=c(1,1))
# vamos colocá-los na mesma escala para comparações
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 elétrica (fora da ponta)\n 1º Sem 2003
",xlab="meses",ylab="consumo", ylim=c(menor,maior))
plot(sem1.2004,type="b",main="Consumo de energia elétrica (fora da ponta)\n 1º Sem 2004
",xlab="meses",ylab="consumo", ylim=c(menor,maior))
par(mfrow=c(1,1))
Professor: Roberto Campos Leoni
# vamos manipular os gráficos!
par(mfrow=c(1,2))
plot(sem1.2003,type="b",main="Consumo de energia elétrica (fora da ponta)\n 1º Sem 2003
",xlab="meses",ylab="consumo", ylim=c(0,2000))
plot(sem1.2004,type="b",main="Consumo de energia elétrica (fora da ponta)\n 1º Sem 2004
",xlab="meses",ylab="consumo", ylim=c(0,2000))
par(mfrow=c(1,1))
# tudo em apenas um gráfico
plot(sem1.2003,col="red",type="l",main="Consumo de energia elétrica \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 parâmetro type
type Descrição
p Pontos
l Linhas
o Pontos e linhas
s, S escada
h 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 numérico
Orange$Tree <- as.numeric(Orange$Tree)
arvores <- max(Orange$Tree)
# amplitude de x e y
xrange <- range(Orange$age)
yrange <- range(Orange$circumference)
# alguns parâmetros do gráfico
plot(xrange, yrange, type="n", xlab="Idade (dias)", ylab="Circunferência (mm)" )
colors <- rainbow(arvores)
linetype <- c(1: arvores)
Professor: Roberto Campos Leoni
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 título e subtítulo
title("crescimento da árvore", "exemplo gráfico 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 simulação
y2<-rnorm(50,100,20) # Segunda simulação
hist(y1, main="Histograma de y1", ylab="Frequência", xlab="Variável y1")
#vamos comparar os dois gráficos na mesma janela
par(mfrow=c(1,2)) # Dividir a janela dos gráficos em uma linha e duas colunas
hist(y1, xlim=c(50,200), ylab="Frequência")
hist(y2, xlim=c(50,200), ylab="Frequência")
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="frequência",col.main=color)
color=c("blue")
hist(notas4$GrupoB,main="GrupoB",xlab="notas",ylab="frequência",col.main=color)
par(mfrow=c(1,1))
# velocidade de veículos 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 veículos \n Av Duque de Caxias - 15-03-
04",xlab="Classes",ylab="Frequências",labels=T,col="4",sub="Fonte:PRF")
Gráfico de Ramos e Folhas
stem(y1)
stem(y2)
Box-plot
Professor: Roberto Campos Leoni
set.seed(12345) #gera sempre o mesmo conjunto de dados (semente)
y1<-rnorm(50,150,20) # Primeira simulação
y2<-rnorm(50,100,20) # Segunda simulação
boxplot(y1,main="Título", xlab="Variável y1")
par(mfrow=c(1,2))
boxplot(y1,y2 )
#ou
boxplot(y1,y2 ,notch=TRUE) # veja como muda o gráfico
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 )
Gráfico de Pareto
O gráfico de Pareto pode ser construído tanto para efeitos como para causas, cujo objetivo é
destacar os níveis prioritários da variável estudada. As variáveis são, normalmente, expressas em número
de ocorrências ou em unidades monetárias. Como exemplo, considere que uma indústria girou o ciclo
PDCA com o objetivo de diminuir o número de televisores defeituosos. A amostragem foi feita sobre a
produção de um mês de acordo os tipos de defeitos e estratificada em função dos locais 1 e 2 de
produção. No estudo, foram analisadas duas variáveis: número de ocorrência 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 não tenha em sua máquina.
names(dados$ocorrencias)<- dados$defeito # Atribuir os nomes dos t ratamentos aos valores de Y
par(mfrow=c(1,2)) # Ver os dois gráficos na mesma janela
pareto.chart(dados$ocorrencias [dados$local==1], las=1)
Professor: Roberto Campos Leoni
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(Método.de.foto.cópia = c("Colocação do Original", "Tempo de
secagem"), Liquido = c("Qualidade", "Qualidade quando novo", "Sujeira"), Papel.de.cópia =
c("Qualidade do papel", "Foto sensibilidade"), Condições.ambientais = c("Mesa suja", "Mãos
sujas"), Papel.original = c("Dobras", "Nitidez", "Transparência"), Copiadora = c(" Velocidade",
"Condições do enrolamento", "Potência da lâmpada")) , effect = " Cópia de má qualidade", cex =
c(1.2, 1.0, 1.5))
#maximize a janela do gráfico para ver melhor
Professor: Roberto Campos Leoni
Aula 9 – Medidas numéricas Alguns comandos básicos:
table( ) Cruzamento de variáveis
mean( ) Média aritmética
median( ) Mediana
sum( ) Soma
summary( ) Sumarização de dados
var( ) Variância
sd( ) Desvio padrão
quantile( ) Quartis com descrição
IQR( ) Amplitude inter-quartil
cor( ) Coeficiente de correlação
range( ) Amplitude total
notas=c(3,4,3,5,4,5,6,7,8,6,4,3,6,7,6,2)
mean(notas)
median(notas)
var(notas)
sd(notas)
quantile(notas)
Vamos ilustrar o uso de algumas medidas com um conjunto de dados já incluído no R, o conjunto
mtcars que descreve características de diferentes modelos de automóvel.
Primeiro vamos carregar e inspecionar os dados.
#mtcars é um data.frame!
data(mtcars)
mtcars # mostra todo o conjunto de dados
dim(mtcars) # mostra a dimensão dos dados
mtcars[1:5,] # mostra as 5 primeiras linhas
names(mtcars) # mostra os nomes das variáveis
help(mtcars) # mostra documentação do conjunto de dados
Medidas: média e mediana
sapply(mtcars, mean)
sapply(mtcars, median)
multi.fun <- function(x) {c(min = min(x), mean = mean(x), max = max(x))}
sapply(cars, multi.fun)
Medidas: sumário
summary(mtcars) # mínimo, quartil 1, 2 e 3, média e máximo
summary(mtcars$mpg) #só da variável mpg
Medidas: percentis
quantile(mtcars$mpg , c(0.1, 0.15, 0.615, 0.89999, 0.99)) # alguns percentis
quantile(mtcars$mpg , seq(from = 0, to = 1, by =0.1)) # percentis de 10 em 10%.
Medidas: assimetria, curtose
Podemos obter várias medidas descritivas usando o pacote psych.
#skew significa assimetria
Professor: Roberto Campos Leoni
library(psych) #instale o pacote caso não tenha em sua máquina
describe(mtcars$mpg)
Sumário por grupos
library(psych)
describe.by(mtcars$mpg, mtcars$cyl)
pessoas<-data.frame(nomes=c("Adriano","Pedro","Joana","Mario",
"Cintia","Maria","Antonio","Marta","José","João") , 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.padrão = sd(x)) } )
# produces mpg.m wt.m mpg.s wt.s for each combination of the levels of cyl and vs
Professor: Roberto Campos Leoni
Aula 10 – Descrevendo um conjunto de dados O livro Estatística Básica de W. Bussab e P. Morettin traz no primeiro capítulo um conjunto de
dados hipotético de atributos de 36 funcionários da companhia ``Milsa''.
Funcionário Est.civil Instrução Filhos Salário Ano Mês Região
1 solteiro 1o Grau 0 4.00 26 3 interior
2 casado 1o Grau 1 4.56 32 10 capital
3 casado 1o Grau 2 5.25 36 5 capital
4 solteiro 2o Grau 0 5.73 20 10 outro
5 solteiro 1o Grau 0 6.26 40 7 outro
6 casado 1o Grau 0 6.66 28 0 interior
7 solteiro 1o Grau 0 6.86 41 0 interior
8 solteiro 1o Grau 0 7.39 43 4 capital
9 casado 2o Grau 1 7.59 34 10 capital
10 solteiro 2o Grau 0 7.44 23 6 outro
11 casado 2o Grau 2 8.12 33 6 interior
12 solteiro 1o Grau 0 8.46 27 11 capital
13 solteiro 2o Grau 0 8.74 37 5 outro
14 casado 1o Grau 3 8.95 44 2 outro
15 casado 2o Grau 0 9.13 30 5 interior
16 solteiro 2o Grau 0 9.35 38 8 outro
17 casado 2o Grau 1 9.77 31 7 capital
18 casado 1o Grau 2 9.80 39 7 outro
19 solteiro Superior 0 10.53 25 8 interior
20 solteiro 2o Grau 0 10.76 37 4 interior
21 casado 2o Grau 1 11.06 30 9 outro
22 solteiro 2o Grau 0 11.59 34 2 capital
23 solteiro 1o Grau 0 12.00 41 0 outro
24 casado Superior 0 12.79 26 1 outro
25 casado 2o Grau 2 13.23 32 5 interior
26 casado 2o Grau 2 13.60 35 0 outro
27 solteiro 1o Grau 0 13.85 46 7 outro
28 casado 2o Grau 0 14.69 29 8 interior
29 casado 2o Grau 5 14.71 40 6 interior
30 casado 2o Grau 2 15.99 35 10 capital
31 solteiro Superior 0 16.22 31 5 outro
32 casado 2o Grau 1 16.61 36 4 interior
33 casado Superior 3 17.26 43 7 capital
34 solteiro Superior 0 18.75 33 7 capital
35 casado 2o Grau 2 19.40 48 11 capital
36 casado Superior 3 23.30 42 2 interior
Professor: Roberto Campos Leoni
milsa <- read.delim("clipboard", dec="." ,header=TRUE)
A planilha ainda não está pronta. Precisamos informar para o programa que as variáveis: civil,
instrução e região, NÃO são numéricas e sim categóricas.
milsa$Est.civil <- factor(milsa$Est.civil)
milsa$Região <- factor(milsa$Região)
milsa$Instrução <- ordered(milsa$Instrução, levels = c("1o Grau", "2o Grau", "Superior"))
milsa
Agora que os dados estão prontos podemos começar a análise descritiva. Inspecionem os comandos a
seguir.
Além disto, precisamos definir uma variável única idade a partir das variáveis Ano e Mês que foram
digitadas. Para gerar a variável idade (em anos) fazemos:
milsa$Idade <- milsa$Ano + milsa$Mês/12
milsa$Idade
milsa
is.data.frame(milsa) # conferindo se é um data-frame
names(milsa) # vendo o nome das variáveis
dim(milsa) # vendo as dimensões 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 são apresentadas algumas possibilidades de uso da Estatística Descritiva
#Variáveis:
Funcionário Est.civil Instrução Filhos Salário Ano Mês Região
## Análise Univariada
##
## 1. Variável 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 então
prop.table(Est.civil.tb)
## 1.2 Gráfico
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
Professor: Roberto Campos Leoni
## 2 Qualitativa Ordinal
Instrução
is.factor(Instrução)
## 2.1 Tabela:
Instrução.tb <- table(Instrução)
Instrução.tb
prop.table(Instrução.tb)
## 2.2 Gráfico:
barplot(Instrução.tb)
## 2.3 Medidas
Instrução.mo <- names(Instrução.tb)[Instrução.tb == max(Instrução.tb)]
Instrução.mo
median(as.numeric(Instrução)) # só calcula mediana de variáveis numéricas
levels(milsa$Instrução)[median(as.numeric(milsa$Instrução))]
## 3 Quantitativa discreta
Filhos
## 3.1 Tabela:
Filhos.tb <- table(Filhos)
Filhos.tb
Filhos.tb/sum(Filhos.tb) # frequências relativas
## 3.2 Gráfico:
plot(Filhos.tb) # gráfico das frequências absolutas
Filhos.fac <- cumsum(Filhos.tb)
Filhos.fac # frequências acumuladas
plot(Filhos.fac, type="s") # gráfico das frequências acumuladas
## 3.3 Medidas
## De posição
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 # média
## Medida de dispersão
range(Filhos, na.rm=T)
diff(range(Filhos, na.rm=T)) # amplitude
Filhos.dp <- sd(Filhos, na.rm=T) # desvio padrão
Filhos.dp
var(Filhos, na.rm=T) # variância
100 * Filhos.dp/Filhos.me # coeficiente de variação
Professor: Roberto Campos Leoni
Filhos.qt <- quantile(Filhos, na.rm=T)
Filhos.qt[4] - Filhos.qt[2] # amplitude interquartílica
summary(Filhos) # várias medidas
## 4. Quantitativa Contínua
Salário
## 4.1 Tabela
range(Salário) # máximo e mínimo
nclass.Sturges(Salário) # número de classes pelo critério de Sturges
args(cut) # ver os argumentos de uma função
args(cut.default) # ver os argumentos padrão de uma função
table(cut(Salário, seq(3.5,23.5,len=8)))
## 4.2 Gráfico
hist(Salário)
hist(Salário, br=seq(3.5,23.5,len=8))
boxplot(Salário)
stem(Salário)
## 4.3 Medidas
## De posição
Salário.md <- median(Salário, na.rm=T)
Salário.md # mediana
Salário.me <- mean(Salário, na.rm=T)
Salário.me # média
## Medida de dispersão
range(Salário, na.rm=T)
diff(range(Salário, na.rm=T)) # amplitude
Salário.dp <- sd(Salário, na.rm=T) # desvio padrão
Salário.dp
var(Salário, na.rm=T) # variância
100 * Salário.dp/Salário.me # coeficiente de variação
Salário.qt <- quantile(Salário, na.rm=T)
Salário.qt[4] - Salário.qt[2] # amplitude interquartílica
summary(Salário) # várias medidas
##
## Análise Bivariada
##
## 1. Qualitativa vs Qualitativa
## Ex. estado civil e grau de instrução
## 1.1 Tabela
civ.gi.tb <- table(Est.civil, Instrução) # frequências absolutas
civ.gi.tb
civ.gi.tb/as.vector(table(Est.civil)) # frequências por linha
## 1.2 Gráfico
Professor: Roberto Campos Leoni
plot(civ.gi.tb)
barplot(civ.gi.tb)
barplot(t(civ.gi.tb))
## 2. Qualitativa vs Quantitativa
## Ex. grau de instrução vs salário
## 2.1 Tabela
quantile(Salário)
ins.sal.tb <- table(Instrução, cut(Salário, quantile(Salário)))
ins.sal.tb
## 2.2 Gráfico
plot(Instrução, Salário)
plot(Salário, Instrução)
## 2.3 Medidas
## calculando as médias para cada grau de instrução
tapply(Salário, Instrução, mean)
## e as variâncias
tapply(Salário, Instrução, var)
## e ainda os mínimo, máximo e quartis
tapply(Salário, Instrução, quantile)
## 3. Quantitativa vs Quantitativa
## Ex. salário e idade
## 3.1 Tabela
table(cut(Idade, quantile(Idade)), cut(Salário, quantile(Salário)))
table(cut(Idade, quantile(Idade, seq(0,1,len=4))), cut(Salário, quantile(Salário, seq(0,1,len=4))))
## 3.2 Gráfico
plot(Idade, Salário)
## 3.3 Medidas
cor(Idade, Salário)
detach(milsa) # desanexando do caminha de procura
Professor: Roberto Campos Leoni
Aula 11 – Projeto prático
Em janeiro do corrente ano 90 pessoas foram submetidas a testes físicos em um
estabelecimento de ensino (ETF) e os resultados parciais encontram-se abaixo.
Resultado, em m, da corrida de 12 minutos – grupo 18 a 25 anos.
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
Resultado, em m, da corrida de 12 minutos - grupo 26 a 33 anos.
2808 2839 2889 2944 2979 3063
2816 2840 2902 2949 2992 3088
2832 2862 2908 2951 2999 3090
2835 2863 2918 2953 3008 3098
2837 2889 2920 2966 3062 3100
Resultado, em m, da corrida de 12 minutos - grupo 34 a 39 anos.
2032 2264 2371 2490 2563 2700
2093 2269 2383 2510 2587 2705
2183 2316 2444 2517 2632 2741
2206 2355 2456 2539 2650 2783
2240 2369 2476 2540 2685 2800
Os índices estabelecidos pelo manual são.
Faixa Etária / Menção E MB B R I
18 a 25 >3299 3100 a 3299 2600 a 3099 2300 a 2599 <2300
26 a 33 >2999 2800 a 2999 2300 a 2799 2000 a 2299 <2000
34 a 39 >2799 2600 a 2799 2100 a 2599 1800 a 2099 <1800
Escreva um relatório contendo uma análise descritiva dos dados.
Modelo de Relatório:
Título: ______________________________________________________________________________
Introdução:
Deve dar ao leitor a informação necessária para entender de que assunto trata o seu trabalho, sem precisar
recorrer a outras fontes. Para escrevê-la, as seguintes perguntas deverão 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) População, amostra, V.A., Tipo de V.A.
Cálculo de medidas
Sumário Estatístico
Medidas Faixas Etárias
18 a 25 26 a 33 34 a 39
Média
Variância
Desvio padrão
Professor: Roberto Campos Leoni
Coef de assimetria
Mediana
Mínimo
1o. quartil
3o. quartil
Máximo
Coeficiente de
variação
Discussão:
É o capítulo em que você explica seus resultados. Você deverá abordar os seguintes tópicos:
6) Comparar as medidas de tendência central e o desvio padrão das três amostras.
7) Analisar a assimetria considerando os resultados das medidas de tendência central (média, mediana e
moda) e o coeficiente de assimetria.
8) Justificar o uso do coeficiente de variação (CV) e comentar sobre os resultados obtidos.
9) Comparar as separatrizes entre as amostras considerando as seguintes metas:
a) Não mais do que 30% tenham índice inferior a 2400 metros.
b) Pelo menos 75% tenham índice superior a 2900 metros
10) Comparar os três histogramas, ou boxplots, indicando posição, variabilidade e forma.
Conclusão:
As conclusões decorrem da discussão, ou seja, até certo ponto, elas devem estar contidas no capítulo de
discussão. Então, verifique se concluiu com base no que discutiu, havendo coerência entre o objetivo
proposto e a conclusão alcançada. Fique atento para não se sentir possuidor “da grande verdade”, porque,
afinal, você tem apenas um fragmento de evidência, uma vez que seu trabalho é apenas descritivo e não
inferencial.
11) Estabeleça propostas com as conclusões obtidas e atente para ser bastante claro ao estabelecer suas
conclusões.
obs: qualquer comando digitado após o símbolo # não é executado no R.
obs: os arquivos utilizados no presente trabalho devem estar no "diretório de trabalho" do R. Tal escolha
pode ser feita alterando a opção File -> Change Dir... (barra de menu do R). Como proceder?
1) Copie os arquivos de dados para o "diretório de trabalho" (crie o diretório que deseja trabalhar no
Windows).
2) Execute o programa R.
3) Selecione a opção File -> Change Dir... (barra de menu do R).
4) Clique no botão BROWSE e selecione a pasta que criou.
obs: o R usa ponto no lugar de virgula ex: 32,8 -> 32.8
Atenção: Na construção de alguns gráficos foram omitidos propositalmente seus elementos
complementares (título, fonte, etc).
#Vamos começar o trabalho... DICA: Vá copiando e colando as linhas de comando a seguir.
# Entre com os valores do 1o Grupo. (logo após 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 conteúdo 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
Professor: Roberto Campos Leoni
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)
# Cálculo de medidas dos Grupos
library(psych) #instale o pacote caso não tenha em sua máquina
describe(grupos)
# conheça este índice de assimetria (conhecido por terceiro momento centrado na média)
#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))
# sumário (mínimo, Q1 ,mediana, Q3 ,máximo e média)
summary(grupos)
# construção de gráficos
boxplot(grupos) # gráfico dos 5 pontos (mín, Q1 ,mediana, Q3 ,máx)
boxplot(grupos,horizontal =T)
hist(grupos$g18a25) # histograma com classes automáticas
hist(grupos$g26a33)
hist(grupos$g34a39)
#todos juntos na mesma tela
par(mfrow=c(1,3)) # desenha até 3 gráficos ao mesmo tempo na tela (1 linhas,3 colunas)
hist(grupos$g18a25) # histograma com classes automáticas
hist(grupos$g26a33)
hist(grupos$g34a39)
par(mfrow=c(1,1)) #desfaz a tela para múltiplos gráficos
#se quiser escolher a quantidade de classes e amplitude, faça assim:
hist(grupos$g18a25,breaks=c(3004,3053,3102,3151,3200,3249,3298),right=F) # histograma com classes
específicas
# vamos explorar mais um pouco os gráficos!
# vamos ver a capacidade de cor do R
colors() # cores do R
cores = colors() # guardado os nomes de cores em uma variável
pie(rep(1,30),c(cores[1:30]),col=c(cores[1:30]),radius=1) # algumas cores com seus nomes
#usando a tabela de menção como referência
mencao18a25 = ifelse(g18a25 >= 3300, "E", ifelse(g18a25 >= 3100,"MB",ifelse(g18a25 >=
2600,"B",ifelse(g18a25 >= 2300,"R" ,"I")))) #classificar os dados como variável qualitativa
mencao18a25
Professor: Roberto Campos Leoni
tabmencao18a25=table(mencao18a25) # tabular os dados
tabmencao18a25
# gráfico através dos dados tabulados
pie(tabmencao18a25,main="Menção dos corredores na corrida de 12 min \n Faixa etária 18 a 25 anos - Jan
2011", sub="Fonte: Escola de Treinamento Físico" , 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="Menção dos corredores na corrida de 12 min \n Faixa etária 26 a 33 anos - Jan
2011", sub="Fonte: Escola de Treinamento Físico")
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="Menção dos corredores na corrida de 12 min \n Faixa etária 34 a 39 anos - Jan
2011", sub="Fonte: Escola de Treinamento Físico" col=c("orange","blue","red","green") )