Buscar

Conhecendo o R: uma visão mais que estatística

Prévia do material em texto

onhecendo o
Urna visáo maís que Estatfstica
Universidade Federal de Vicosa
2013
Asociación de Editoriales Universitarias de
América Latina y el Caribe
Associacáo Brasileira das Editoras
Universitárias
A Editora UFV é filiada a EdiTORA
UFV
Diretor da EditoraUl/V Clóvis Andrade Neves
Conselho Editorial Célia Alencar de Moraes
(presidente), Antonio Lelis Pinheiro,
Carlos Antonio Moreira Leite, Clóvis
Andrade Neves, Joaquim Sucena
Lannes, Júlio Maria de Andrade
Araújo, Marco Aurélio Marques
Ferreira, Marcos Ribeiro Furtado e
Mauri Martins Teixeira
Urna visáo mais que EstatístlcaDemetrius David da SilvaGumercindo Souza Lima
Vice-Reitor
Prá-Reitor de Extensiio e Cultura
Conhecendo O R
Uníversidade Federal de Vicosa
Reitora Nilda de Fátima Ferreira Soares
Marcio Pupin Mello
Luiz Alexandre Peternelli
Este livro foi impresso em papel offset 75 glm2 (mielo) e cartáo supremo 250 g/m2 (capa).
Pedidos
Tel. (Oxx31)3899-2234
Tel./Fax (Oxx31)3899-3113
E-mail: editoraorcamento@ufv.br
editoravendas@ufv.br
Livraria Virtual: www.editoraufv.com.br
Editora UFV
Edifício Francisco Sao José, s/n
Universidade Federal de Vicosa
36570-000 Vicosa, MG, Brasil
Tels. (Oxx31)3899-2220/3139
E-mail: editora@ufv.br
Aos meus pais
Leonel Petemelli Filho (in memoriam)
e Maria Piedade.
A minha esposa Ethel.
Aos meus filhos Mariana e Mateus.
L.A. P.
Capa: Miro Saraiva
Revisáo linguistica: Constanca Bezerra Albino Chaves
Editoraeáo eletrónica: José Roberto da Silva Lana
Impressáo e acabamento: Divisáo Gráfica da Editora UFV
CDD 22.ed. 519.5
1. Estatistica matemática. 2. R (Linguagem de programacáo de
computador). 3. Probabilidade. 4. Análise de séries temporais. 5.
Análise de regressáo. 1. Peternelli, Luiz Alexandre, 1966-.n.Título.
Inclui apéndice e índice.
Referencias bibliográficas: p. 210-212.
ISBN 978-85-7269~495-7
Aos meus pais
José Antero e Angela.
A minha esposa Bianka.
M.P.M.
Mello, Marcia Pupin, 1983-
Conhecendo o R : urna visáo mais que estatística / Marcio Pupin de
Mello, Luiz Alexandre Petemelli. - Vicosa, MG : Ed. UFV, 2013.
222p. :u ;22 cm.
M527c
2013
Ficha catalográfica preparada pela Secáo de Catalogacáo e
Classificacáo da Biblioteca Central da UFV
Direitos de edicáo reservados a Editora UFV.
Nenhuma parte desta publicacáo pode ser reproduzida, apropriada e estocada, por
qualquer forma ou meio, sem autorizacáo do detentor dos seus direitos de edicáo.
Impresso no Brasil :
© 2007 by Luiz Alexandre Peternelli e Marcio Pupin de Mello
1ª edicáo: 2007 - Cademo Didático
1ª edicáo: 2011 - Série Didática
1ª reimpressáo: 2012
© 2013 by Marcio Pupin de Mello e Luiz Alexandre Peternelli-
1ª edicáo: 2013
o objetivo deste livro nao é tao somente ensinar um software ou
tópicos em Estatística, mas proporcionar um ponto de partida para
pessoas que desejam comecar a utilizar o R e suas ferramentas
estatísticas. É dar suporte áqueles que de uma forma ou de outra usam
programas estatísticos em seu dia a dia e tornar acessível aos
interessados alguns conhecimentos acumulados com o emprego
constante deste software livre em estudos e análises estatísticas
desenvolvidas pelos autores ao longo dos anos. É um material de
referencia.
Procuramos, nesta obra, valorizar o uso do R em preparacáo e
rnanipulacáo de dados, análises gráficas, desenvolvimento de funcóes
de aplicacáo específica e análises estatísticas. Abordamos, de maneira
clara, objetiva e extremamente didática, as informacóes mais
relevantes a serem consideradas especialmente pelos usuários
iniciantes e intermediários. As explicacóes do uso de diversos
comandos e argumentos sao ilustradas com exemplos e comentários,
facilitando a interpretacáo e a adaptacáo para outro problema
semelhante.
Os Capítulos de 1 a S. abordam desde o entendimento de como
funciona o R, como baixar e instalar-usoftware em diferentes sistemas
operacionais, sua estrutura de arquivos, pácotes, comandos e
argumentos até a manipulacáo de dados e a elaboracáo de gráficos. Já
os Capítulos de 9 a 13 focam em ferramentas e análises estatísticas no
R. Nesses capítulos há exemplos aplicados que chamamos de
Resolvendo com o R..., em que sao utilizados vários problemas do
cotidiano profissional, nos quais a Estatística está presente.
Os comandos de entrada, assim como os de saída do programa,
estáo em formatacáo diferenciada,o que permitea sua fácil visualizacáo,
Nesta obra, o leitor encontrarádiversasfigurasilustrativas,que o ajudaráo
Apresentacáo
CAPÍTULO 2 - COME~ANDO A USAR O R 26
Obtendo Ajuda.'. , ~~
Sobre Comandos e Argumentos.................................................................. 2
ME~:~~~~E:::·:.:·.:.::···::::::·:::·:···:::::.::.:···:::·:···:::·::::::::·::·:..:::·.:·:::::.··::h
........34
pgi~:~~~I~~:~:~~:::i::::::::::i::::::::i::::::::::::::::::::::::::::::::::::::::::::i:::::1~
Infiruto, NaN e NA ..
CAPÍTULO 3 - OBJETOS ESPECIAlS 43
V~:;:;~~S:::::.::.:.:.:.::::.:::: :.:.::.:::.:..:.:.:::~::.~::::i::::~:.~::~~~.~:::::::::::::::~::.~::~
Indices em Vetores ..
Como Citar o R em Suas Pubhca90es......................................................... O
............................................. 2Sobre os Pacotes 23
F~i:::~:.~~.i;.~~~<.:::::.:.::::..:..:::::.:::..:.:.::::.. :.:::::::..~!
Sumário
Os autores.
Boa leitura!
a entender o processo de forma visual, além de tabelas que resumem
concisamente várias operacóes e informa90es úteis ao uso do software.
Todos os comandos empregados neste obra também se
encontram disponíveis em www.dsr.inpe.br/-mello e
www.det.ufv.br/-petemelli. poupando o usuário de digitá-los ao valer-
se do uso dos recursos "copiar e colar", A versáo do R utilizada no
texto para introducáo dos comandos, assim como as saídas e os
resultados, é a 3.0.0 para Windows.
Quaisquer comentários, críticas, sugestóes e elogios seráo muito
gem-vindos e podem ser enviados a (mello@ieee.org ou
petemelli@ufv.br).
CAPÍTULO 8 - CRIANDO GRÁFIcosCOM O R 101
Conceitos Básicos 101
Uso do Comando pLot; () 102
Um Gráfico Simples : 102
Alterando o Padráo dos Pontos ~~ 103
Vários Gráficos na Mesma Janela Gráfica 104
Personalizando Gráficos 106
-Histogramas 108
Um Exemplo Bem Simples , 108
Personalizando Histogramas 109
Ogiva 112
Gráficos de Barras 113
Boxplots . : :;; 114
Cores nos Gráficos ; 116
Adicionando Algo em um Gráfico Existente 116
Mudando as Linhas 117
Definindo Manualmente o Intervalo dos Eixos .118
Adicionando Texto 118
Interagindo com a Janela Gráfica 119
Identificadores no Gráfico 119
Pacotes Gráficos Adicionais 121
CAPÍTULO 7 - CRIANDO FuN<;OES 92
Entendendo o Conceito de Funcáo 92
Funcñes Envolvendo Loops 96
Funcñes Envolvendo Condicdo 97
Operadores Lógicos 98
CAPÍTULO 6 - SALVANDO E ABRINDO ARQUIVOS DOR :: 88
Exibindo e Alterando o Diretório de TrabaIho 88
Exibindo o Conteúdo de um Diretório 89
Arquivos do R 89
Salvando e abrindo projetos no R (arquivos *.RData) 90
Salvando e Carregando o Histórico de Comandos (arquivos *.Rhistory) 90
~:~~'~~~~'~~'~~~~~~~~~~~~~~~~~~~'."""""";""'"·····································: 47
Obtendo Informacñes sobre a M~~·································..················.47
............................. . 48
~ais Informacóes sobre Construcáo de Matrizes :..........
Indices das Matrizes ·······,..··..·..·····..·· .49
~:~~~.:;:;;..;~.::::::::::::.:::::::::::::..:::::.::.:::.:::::.:.:.:::::::::::::::::::::::::::::::::::::::::~~
Índices em Arrays . 53
-".~¿~~:~;:~~~.:¿~;:::::::;;~;;~~:~~~:~::.'::::::::.:::::.::::::':::':::::.:::::.::':'.:::::::::::;~
. Manipulando um Data.fr 60
ame .
Separando um Data.frame or Gru ··········..····..··..······..·······..·..·· 62
A p pos........................ 64grupando Data.frames ~ .
L~~~~·~~~~~~~~·~~~·~~;~~=:i;~:~::.::·:·::·:::.::::·:::"::.'::::'.::::::.::'.::':.:::~
CAPÍTULO 4 - OPERA<;OES ARITMÉTICAS NOR
Arredondamentos e Aproxi -. . '" 69
C
ma~oes.......................... 71omandos round () e s igni f ..
() 72Truncando Valores .
... ~:::~:O~~;;;·~~~~s:~:~:·t·::;::::::::::::::::::::::::::~:::::::::::::::::::::::::::::::::::::::.;;
a nzes ..Alguns Comandos Úteis " 73
Usando Alguns Tipos d~·~~~~~~~~~~·~~··~;~~~~~~~·::::::::::::::··..··..······ 76
······· 77
CAPÍTULO 5- ENTRANDoCOM DADOS
Uso do Comando sean () 79
Uso do Comando edi t () ····· 79
Montando uma\Matriz c~~·~~·~·~~~~·~~·~·~·;¡~~-;;:~·~¡~~~··:················80
Lendo Dados de um Ar uivo-Text oruca 81
Usando o Comando re:d. tableo(.; ..~~~~~~~..~~~~~ 83
Lendo Dados de urna Planilha Eletró . .. ·········..· ··· ··· 83
mca........... 85Usando o Comando read. xlsx , ..
C () 85arregando Dados Contidos em Pacote ..
s 87
REFERENCIAS 212
APENDICE 215
ÍNDICEREMISSIVO 220
CAPÍTULO13- REGRESsAo 190
Polinomial Simples ' 191
De Grau Igual a 1 191
De Grau Maior que 1 196
Um Gráfico Útil ero Regressóes 200
Polinomial Múltipla 203
Superfície de Resposta ::~.~ 206
Modelos Nao Polinomiais 208
Um Modelo Exponencial 208
Outros Modelos 211
CAPÍTULO12- ANÁLISEDEVARIÁNCIA(ANOVA) 165
Delineamento Inteirarnente Casualizado : 166
Delineamento em Blocos Casualizados 169
Delineamento em Quadrado Latino 173
Experimentos Fatoriais 174
Experimentos com Dois Fatores Segundo o DIC 175
Fatorial Usando o DBC 177
Experimentos em Parcelas Subdivididas 179
Um Exemplo de Parcela Subdividida Segundo o DBC 180
Teste de Comparacóes Múltiplas .182
Teste de Tukey : 182
CAPITULO11- ALGUNSTESTESESTATÍSTICOS 148
Ideia Geral Sobre os Testes de Hipóteses : : 148
Introducáo 148
Tipos de Erros Inerentes aos Testes de Hipóteses 150
P-value (ou valor p) , 150
Teste t (deStudent) 152
Para urna Média : 153
Para as Médias de Duas Amostras Independentes 155
Para as Médias de Duas Amostras Dependentes 158
Teste F , 159
Outros Testes 161
Teste de Kolrnogorov-Smirnov 161
Teste para a Normalidade : 162
CAPITULO10- SOBREPROBABILIDADE 134
Algumas Distribuicóes 134
Binomial 138
Poisson ;' 140
Normal (Gauss) 142
Geracáo de Números Aleatórios 145
De um Conjunto Preestabelecidode Valores ; , 145
De urna Distribuicáo de Interesse ~ 146
CAPITULO9 - ESTATÍSTICADESCRITIVA 122 '
Notacñes de Somas e Produtos 123
Somatório 123
Produtório , 124
Medidas de Posicáo Amostral 125
Média ; 125
Mediana 126
Moda 127
Medidas de Dispersáo Amostral 128
Variáncia : 128
Desvio-padráo 129
Amplitude Total. ..: 129
Covariáncia e Correlacáo - :..131
o uso de softwares e pacotes estatísticos para a análise de dados
é de grande importancia, desde o desenvolvimento e aplicacáo de
métodos até a análise e interpretacáo de resultados. Contudo, observa-
se que esses softwares e pacotes apresentam custo de aquisicáo
relativamente elevado. Assim, é grande a procura' e também o
incentivo ao uso dos chamados softwares livres nos dias de hoje
(CHAMBERS, 2008).
Dentre os softwares de domínio público, um que tem ganhado
destaque e cada vez mais adeptos e colaboradores é o Ambiente R (R
CORE TEAM, 2013), ou simplesmente R, como é usualmente
conhecido pelos seus usuários (QUICK, 2010). Segundo Crawley
(2007), oRé urna linguagem de alto nível e um ambiente para análise
de dados e geracáo de gráficos. Além disso, é gratuito e tem código-
fonte aberto, podendo portanto ser mcdificado ou implementado com
novos procedimentos e comandos desenvolvidos a qualquermomento
e por qualquer usuário. De fato, oRé urna importante ferramenta na
análise e manipulacáo de dados, especialmente por apresentar enorme
gama de ferramentas como testes paramétricos e nao paramétricos,
modelagem linear e nao linear, análise de séries temporais,
classificacáo e mineracáo de dados, análise de agrupamento, análise
de sobrevivéncia, simulacáo e estatística espacial, além da facilidade
na elaboracáo de diversos tipos de gráfico, dentre outros.
Introducáo
Algo Sobre o R
a) Linux
Existem instrucóes detalhadas de instalacáo para algumas das
principais distribuicóes do Linux: Debian, Red Hat, SUSB e Ubuntu.
Bm geral, vocé precisará de privilégios de administrador "root" ou
"sudo" para proceder a instalacáo.
O R pode ser obtido gratuitamente em http://www.R-
project.org, onde é apresentado em versees de acordo com os sistemas
operacionais Linux, MacOS X e Windows. Além disso, encontram-se
neste site mais informacóes sobre a sua utilizacáo e urna central de
correspondencias onde profissionais de vários países podem contribuir
para a implementacáo de novos recursos.
Para a instalacáo do R basta conectar-se ao site e, em CRAN
(Comprehensive R Archive Network), escolher o local de
disponibilizacáo (espelho) do programa mais próximo de onde vocé se
encontra. No caso do Brasil, existem atualmente quatro opcóes:
Universidade Federal do Paraná (PR), Fundacáo Osvaldo Cruz (RJ),
Universidade de Sao Paulo (USP-SP) e USP Piracicaba (SP). Após
escolher o espelho, em Download and Install R, dique no link que
corresponde ao sistema operacionaldo seu computador (Linux, Mac
OS X ou Windows). De acordo com sua escolha, proceda-se da
seguinte forma:
Instalando o R
Prime iros Passos
suponha que vocé queira saber como desenhar urna reta na cor
vermelha. Vocé pode procurar na mailing list usando as palavras-
chaves red line ou draw colored lineoNote que o idioma oficial das
mailing lists é o ingles. Para saber como se cadastrar e utilizar as
mailing lists acesse http://www.r-project.org/mail.html. Caso vocé
tenha restricóes quanto ao uso do ingles, pode recorrer a lista
brasileira, em portugués. Mais informacóes no enderece eletrónico
http://leg.est.ufpr.br/doku.php/software:rbr.
SobreoR
Os livros sobre o R sao excelentes tanto para o aprendizado do
software quanto para termos em máos urn material que permite
consultar, a qualquer momento, diversos recursos sobre essa
ferramenta. Entrentanto, há também urna ótima fonte de consulta para
dúvidas específicas: sao as mailing lists, que sao indicadas quando há
dúvidas ou problemas específicos a serem sanados. Por exemplo,
Onde Buscar Ajuda?
o R tem suas raízes em duas linguagens anteriores: a linguagem
S (BECKER, et al., 1988) e a Scheme (SUSSMAN; STEELE Jr.,
1998).Foi criado como um projeto de pesquisa pelo neozelandés Ross
Ihaka e pelo canadense Robert Gentleman (IHAKA; GENTLEMAN,
1996); e nos dias atuais está sob constante desenvolvimento por um
grupo chamado R Core Team.
É importante salientar que o R nao é simplesmente um
programa estatístico, urna vez que permite operacóes matemáticas,
manipulacáo de vetores e matrizes, confeccáo de gráficos e
manipulacáo de bancos de dados, entre outros. Entretanto, será
abordado como um sistema integrado, que permite a realizacáo de
tarefas comuns em estatística.
Ao contrário dos softwares pagos, ao invés de contar com o
suporte técnico oferecido pela empresa que mantém o software, o R
conta com a colaboracáo de dezenas (talvez centenas) de milhares de
usuários ao redor do mundo. Alguns deles sao renomados professores
e pesquisadores em diversas áreas do conhecimento. Esse suporte é
conseguido, principalmente, através de listas de emails (mailing lists)
contendo dúvidas e respostas sobre diversos assuntos relacionados ao
R. Caso sua dúvida já nao tenha sido respondida anteriormente, envie
um email para a lista e, em pouco tempo, .algumespecialista em algum
lugar do mundo responderá sua pergunta.
o Programa
Adicionalmente, oRé capaz de interagir com diversos outros
programas e linguagens de programacáo,
Mello e Peternelli
@Manual{ ,
title = {R: A Language and Environment for
Statistical Computing},
A BibTeX entry for LaTeX users is
Dentre as informacóes mostradas na tela inicial do R, está o
comando que mostra como citar o R em suas publicacóes, Isso pode
ser feito digitando cit at i.on () ,no prompt do R. Veja:
> citation()
R CoreTeam (2013). R: A language and
environment for statistical
computing. R Foundation for Statistical
Computing, Vienna, Austria.
URL http://www.R-project.org/.
Como Citar o R em Suas Publicacóes
Figura 1.1 - Janela da interface do usuário do R no Windows.
Digite 'demo ()' para demonstrar;oes, 'help () I para o sistema on-line de aj uda ,
, ou 'help.start()' para abrir o s í acema de ajuda em HH!L no seu navegador.
Digice 'q ()' para sair do R.
R é um projeto colaborativo COlOmuitos contribuidores.
Digite 'contributors () I para obter mais in:forma.,oes e
'citation()' para saber como citar o R ou pacotes do R em publica.,oes.
R é uro so:ftTJare livre e velOaem GAR!tNTIP.ALGUHA.
VoCÉ!pode redistribui-lo sob certas c ircunst€mcias.
Digite I license ()' ou I licence ()' para detalhes de distribui.,ao.
R version 3.0.0 (2013-0'1-03) -- "Masked Harvel"
Copyright (C) 2013 ~he R Foundation :for Statistical Computing
Plat:form: XB6_6'1-TJ6'1'''I!',ingw32/x6'1(6'1-bit)
indicando que o comando digitado na linha anterior ainda nao foi
finalizado. Acima do prompt, em cor azul, encontram-se algumas
informacóes sobre o sistema e alguns comandos básicos.
19Algo Sobre o R
1 Na versáo para Windows. Em outros sistemas operaeionais as eores podem variar.
Com o R iniciado, vocé verá na tela o símbolo> em vermelho'
que é o prompt do R, numa janela conhecida como R Console. Est~
sinal de prompt indica que o sistema está pronto para receber seus
comandos. Algumas vezes, o sinal de prompt do R muda de > para +
. Durante o processo de instalacáo, tanto no Mac OS X quanto no
Wmdows, atalhos para o R sao criados e podem ser acessados para
rodar o programa. No caso do Linux, o programa geralmente é
executado digitando R no console de comando (shellprompt).
Ao rodar o R no Windows, vocé deverá ver a interface do
usuário, como mostrado na Figura 1.1. Na janela R GU1existem urna
barra de menus, urna barra de ferramentas ou comandos e o console
doR.
Rodando o R
É importante notar que o R tende a instalar usando o idioma
defmido no, seu sistema operacional. E existe a opcáo d~ instalar em
portugués do Brasil!
cjWindows
Clique no link "base" para acessar a página que permitirá fazer
o download do arquivo com extencáo "exe" (Por exemplo "R-3.0.0-
win.exe"). As versóes 'atuais, do instalador para Windows suportam
tanto os sistemas de 32 quanto os de 64 bits. Inicie o instalador e siga
as suas instrucóes, '
b)Mac OS X
Leia as notas da versáo para saber se a versáo atual do R é
compatível com a versáo do sistema operacional rodando em seu Mac.
Caso seja, faca o download e a instalacáo pelo arquivo com extencáo
"pkg",(por exemplo: "R-3.0.0.pkg"). Se vocé estiver rodando versóes
mais antigas do sistema operacional, use o link old para baixar versóes
mais antigas, do R ou utilize diretamente o link correspondente a
versáo do seu sistema operacional. ' '
Mello e Petemelli18
3 o comando search () também lista os data.frames (que seráo discutidos em capítulos
posteriores) anexados na memória do R.
4 Digitando apenas library () o R exibirá a lista de pacotes instalados.
No caso do comando library () as aspas no nome do pacote
sao opcionais", Sempre que iniciar o R e quiser usar um pacote que
nao é, por padráo, carregado na inicializacáo do R, vocé terá que
carregá-lo manualmente. Consulte o apéndice, no final do livro, caso
deseje aprender como carregar pacotes automaticamente na
inicializacáo do R.
> library ("boot")
núcleo do R e contém comandos gráficos e alguns procedimentos,
como regressáo linear e análise de variáncia. Cada um desses pacotes
instalados possui um diretório próprio - por exemplo, para o pacote
base existe um caminho R_HOME/library/base com um arquivo em
formato texto, chamado "INDEX", que contém a descricáo do pacote
assim como a listagem de todos os comandos e todos os conjuntos de
dados .contidos no pacote. Essas informacóes também podem ser
acessadas digitando library (help=base) no prompt de comando
do R. Lembre-se que para -visualizar as informacóes de outro pacote
instalado basta substituir o nome base pelo nome do pacote de
interesse.
É importante destacar a diferenca entre os pacotes instalados e
aqueles que estáo carregados na memória. Para visualizar a lista de
todos os pacotes instalados, basta digitar no prompt:
> installed.packages()
Quando vocé inicia o R, automaticamente ele carrega alguns
pacotes necessários para o funcionamento básico do software, por
exemplo, base, graphics e utils, dentre outros. Para visualizar os
pacotes' carregados na memória, digite:
> search ()
Contudo, existem alguns pacotes instalados que nao estáo
carregados na memória. Para carregar um já instalado, basta usar o
comando library () ou o comando require (), acrescentando entre
os parénteses o nome do pacote a ser carregado, por exemplo:
21Algo Sobre o R
2 http://www.vps.fmvz.usp.br/CRAN/web/packages/available_packages_by _name.html.
ORé composto por vanos pacotes (packages), também
chamados de bibliotecas tlibraries), Pacotes ou bibliotecas sao os
nomes mais usados para desig;nar um conjunto de comandos e, ou,
conjuntos de dados. Os comandos básicos do R, por exemplo, estáo
agrupados em um pacote chamado base. Existem inúmeros pacotes,
alguns já inclusos na instalacáo padráo do R e vários foram
desenvolvidos por usuários do R que, em certo momento, julgaram
importante criar comandos que suprissem suas necessidades. Depois,
esses usuários disponibilizaram esses comandos na forma de um
pacote com determinado nome, para que outras pessoas que
necessitem usar os mesmos comandos nao precisem implementá-los
novamente. Urna lista com todos os pacotes disponíveis para o R pode
ser acessada no link da nota de rodapé/. É essa colaboracáo mútua que
faz do. R um programa amplo, interdisciplinar e em constante
evolucáo, I
Todos os comandos disponíveis no seu R ficam entáo
agrupados em pacotes, que, por padráo, sao guardados fisicamente· no
diretório R_HOME/library (R_HOME é o diretório onde foi instalado
o R). Neste diretório, os pacotes sao gravados em subdiretórios. Nele
vocé certamente encontrará o pacote chamado base, que constitui o
Sobre os Pacotes
Mas o que seria um pacote do R?
Para saber como citar um pacote específico, basta usar o mesmo
comando, mas colocando o nome do pacote entre aspas, dentro dos
parenteses,como
> 'citation ("MASS")
author = {{R Core Team}},
organization = {R Foundation for Statistical
Comput ing} ,
address = {Vienna, Austria},
year = {2Gl3},
url = {http://www.R-project.org/},
Mello e Petemelli20
Como mostrado na Figura-Ll ; o R possui um prompt
aguardando os comandos do usuário no Console do R. Contudo,
alguns usuários nao tém tanta facilidade em trabalhar com janelas de
prompt, especialmente quando é necessário utilizar diversas linhas de
comando (urna rotina de análises, por exemplo). Urna alternativa é
usar editores de texto para digitar seus comandos e, entáo, valendo-se
dos recursos "copiar e colar", transferir os comandos do editor para o
Console do R. A própria janela de usuário do R (Figura 1.1) oferece
um editor de textos. No caso doWindows urn novo arquivo em branco
pode ser aberto acessando o menu "Arquivo -> Novo script". Já no
Mac OSX, urn novo arquivo pode ser aberto acessando o menu "File -
Ferramentas Adicionais
O R está ern constante evolucáo. Prova disso sao as novidades
em cada urna das novas versóes lancadas, O link
http://cran.rstudio.com/srclbaseINEWS.html lista, desde a versáo
2.10.0, as novidades de cada versáo.
Toda nova versáo do R será instalada no diretório R_HOME\R.
Assim, se vocé instalar, por exemplo, a versáo 3.0.0, será criada urna
pasta dentro da pasta R, como R_HOME\R\R-3.0.0, que conterá os
arquivos referentes a essa versáo,
É possível ter instaladas no mesmo computador várias versees
do R e, para cadaurna delas, será criada urna pastaRversao dentro da
pasta R_HOME\R. Entretanto, é preciso lembrar que, quando vocé
instala determinado pacote (por exemplo, modeest) em certa versáo
do R, este pacote só estará disponível nessa versáo e-mque o pacote
foi instalado. Todavia, vocé pode instalar quantos pacotes quiser em
quaisquer versóes do R, desde que observadas as compatibilidades de
cada pacote. -..
As Versóes do R
"Pacotes -> Instalar pacote(s) ... " ou mesmo "Instalar pacote(s) a
partir de arquivos zip locais ...", caso vocé tenha baixado a versáo
compactada (zip) do pacote no site doR.
Após pressionar o ENTER, o R mostrará urna lista de espelhos
de onde o pacote poderá serbaixado, Escolha, preferencialmente, um
local perto de onde vocé está, por exemplo: "Brazil (SP 1)", que
corresponde ao espelho da USP, em Sao Paulo-SP. o R fará entáo o
download do pacote e o instalará em seu computador. Entretanto,
apesar de instalado, o pacote ainda nao está carregado. Antes de
utiliza-lo, vocé deve carregá-lo usando library (modeest)
(lembre-se de substituir o modeest pelo nome do pacote de seu
interesse). .
Os pacotes estáo em constante aperfeicoamento, Assim, de
tempos em tempos, sao lancadas novas versees contendo melhorias
novos comandos e novos conjuntos de dados. Portanto, é importante
atualizar periódicamente os pacotes instalados no seu R. Para atualizar
um pacote específico, por exemplo o boot, basta digitar
update. package s ("boot"). E, para atualizar todos os pacotes
instalados n~~n's~uR, digite:
> update.packages(ask=FALSE)
O argumento ask definido como FALSEgarante que o R
instalará as novas versóes disponíveis sem pedir confirmacáo,
Lembre-se que é necessário ter conexáo com a internet para atualizar
os pacotes!
Tanto no R para Windows quanto no R para Mac OS X é
possível manipular (listar, instalar, atualizar etc.) os pacotes usando
menus disponíveis na interface do usuário. No caso do Windows,
existe o menu Pacotes. Já para o Mac OS X, os pacotes podem ser
acessados pelo menu Packages & Data. Para o Windows, por
exemplo, é possível atualizar todos os pacotes acessando o menu
Pacotes -> Atualizar pacotes ....
Vocé também poderá fazer, a partir do site do R, o download de
pacotes que nao estáo previamente instalados. Na versáo do R para
Windows, para instalar os pacotes, pode-se usar o menu suspenso
> install. package s ("modeest ")
Para instalar um pacote que nao faca parte da instalacáo-pradráo
do R, estando conectado a internet, pode-se usar o comando
install.packages (), acrescentando entre os parénteses o nome do
pacote entre aspas, como:
Mello e Petemelli22
5o capítulo 6 deste livro descreve, entre outros, o que é urna sessáo do R, como exibir e alterar o
diretório de trabalho atual e como salvar um arquivo com os comandos executados no Console
doR.
Nós encorajamos vocé a utilizar o RStudio, especialmente
quando for necessário digitar varias linhas de comando, por exemplo
durante a programacáo ensinada no capítulo 7. Contudo, esteja ciente
de que, apesar de raros, existem alguns casos em que os comandos
funcionam de maneira diferente quando rodamos o R
independentemente ou vinculado ao RStudio.
Figura 1.2 - Janela do RStudio para Windows.
comandos executados no Console pode ser visualizado", Já na parte
inferior direita há quatro abas: Files, que mostra o conteúdo do
diretório de trabalho atual; Plots, que exibe os gráficos gerados pelo
R; Packages, que apresenta os pacotes instalados e os carregados; e
Help, que exibe a ajuda doR.
25Algo Sobre o R
9 RStudio oferece urna interface de usuário mais completa para
o R. E o que os especialistas em computacáo chamam de IDE
iIñtegrated Development Environment ou Ambiente Integrado de
Desenvolvimento), Trata-se de um software que oferece a integracáo
entre o R e um avancado editor de textos voltado para edicáo de
comandos.
O RStudio é gratuito, tero versóes para Linux, Mac OS X e
Windows e pode ser obtido em http://www.rstudio.comJ.Para baixar e
instalar este programa, acesse a página ora citada e escolha fazer o
download da versáo RStudio Desktop. O site entáo mostrará a versáo
recomendada para seu computar em Recommended For Your System.
Baixe e instale o RStudio. Ele deve ser instalado em computadores em
que o Rjá esteja instalado.
Durante o processo de instalacáo, o RStudio integra-se á-última
versáo do R instalada em seu computador.: A Figura 1.2 mostra a
versáo 0.97 do RStudio em um computador de 64 bits rodando o
Windows. Note que o RStudio integrou-se ao R-3.0.0 já instalado no
computador. A janela do RStudio (Figura 1.2) é dividida em quatro
partes. A parte inferior esquerda é urria j anela do Console do R.
Acessando o menu "File -> New -> R Script" o RStudio abre, na parte
superior esquerda, um novo documento em branco onde os comandos
devem ser digitados pelo usuário. O usuário pode entáo utilizar o
botáo Run nesta \janela para enviar a linha de comando atual ou as
linhas selecionadas para Q_ Console, sem a necessidade de copiar e
colar. Na versáo do RStudio para Windows, o atalho Ctrl+ENTER
tambémpode ser usado com a mesma finalidade do botáo Run.
Na parte superior direita, o RStudio mostra urna janela com os
objetos criados na sessao atual do R e urna aba onde o histórico.dos
RStudio
> New Document". O editor próprio do R oferece algumas vantagens
em relacáo aos editores de textos independentes, como o Bloco de
Notas (notepad.exe) do Windows, mas muitos usuários ainda tém
dificuldade em lidar com o editor de textos embutido doR.
Mello e Petemelli24
6 Veja, no apéndice, como personalizar a maneira de abrir a ajuda no seu R.
Os quatro primeiros comandos listados na Figura 2.1 pertencem
ao pacote base, enquanto os dais últimos pertencem respectivamente
ao Matrix e stats. Com base na lista mostrada na Figura 2.1, vocé
pode usar, por exemplo, o comando seq (), do pacote base
(base: : seq) para criar urna sequéncia numérica.
Agora que descobriu o nome do comando (seq), vocé terá de
saber como usa-lo. Se a ajuda do seu R abriu em urn navegador de
internet, vocé pode simplesmente clicar sobre o link com o nome do
comando desejado (base: : seq). Caso seu R esteje configurado para
abrir a ajuda dentro da própria janela de usuario", vocé deve entáo
Figura 2.1 - Ajuda do R listando os comandos, dentre os pacotes instalados,
que contém na descricáo a palavra sequence.
s!ats:'convolve Convolution of Sequences viaFFT
Matrix::ábIseq Sequence Genera~on ,éabIndeK\ Abstract Indo" Vectcrs
base:'sequence CreateA Vector ofSequences
base:'seq Sequence Generation
baze':se~ 'Date Generare RegularSequences or:Dates
base::seq 'PÓSnCt Generate-RegulárSequences o{Times
Help paqe s :
The searchstring was "ssquence"
:\)
Seal:.'ch Resul ts
O R irá entáo abrir seu navegador de internet e mostrar todos os
comandos, dentro dos pacotes instalados, que contenham a palavra
sequence na descricáo (Figura 2.1).
) ??sequence
com base em urna palavra-chave (em ingles) usando duas
interroga96es. Suponha que vocé queira criar uma sequéncia
(sequence) numérica, mas nao sabe qual o comando para criá-la. Para
descobrir, vocé pode digitar:
27Comefando a Usar o R
É praticamente impossível memorizar todos os comandos do R.
Assim, a ajuda do R pode ser muito útil quando se deseja saber qual
comando utilizar e como utilizá-lo, Existe urna lógica fácil ao buscar
ajuda no R. .Quando vocé nao sabe qual comando utilizar, procure-o
Obtendo Ajuda
No Capítulo 1 é mostrado como instalar e preparar o R. A
seguir abordaremos alguns conceitos iniciais de utilizacáo.
De maneira sucinta, o R funciona da seguinte forma:
.primeiramente ele recebe comandos digitados pelo usuário no prompt
, 'e os processa usando os pacotes carregados na memória, O resultado
desse processamento pode ser exibido na tela ou armazenado em um
objeto na memória do R. Além dos .comandos relacionados com os
procedimentosestatísticos, o R pode ser usado como calculadora na
realizacáo dos mais diversos cálculos e operacñes com matrizes,
Quando vocé entra; por exemplo, com o comando para realizar
, urna operacáo matemática simples:
) 2+3
[1] 5
o R processa o resultado da soma de 2+3 e o exibe na tela (5). O
número '1 entre colchetes é apenas um índice, indicando que o
primeiro (e único) elemento do resultado é o número 5.
Cornecando a Usar o R
Capít
Obs.: O comando he lp () é usado para obter uma desenfilo deta-
lhada de um comando. Porém, é necessário que opacote a qual
estepertenca esteja carregado.
help. start ()Iniciar ajuda HTML no navegador
ls ("package:base")Listar os comandos e operacñescontidos no base
apropos (11 test 11)Procura por comandos e objetos com
um texto específico (p.ex. test)
Obter ajuda sobreo boot (package=boot)
Mostrar exemplos do comandos eq () . __ examp Le (seq)
help (seq) ou? seqObter ajuda sobre o comando seq ()
help. search ( 11 sequence 11 )
ou ?? sequence
Procurar por sequence em todos os
pacotes instalados
ComandoA~ao de ajuda
Tabela 2.1 - Algumas maneiras de se obter ajuda no.R , .
Existem diversas outras formas de se obter ~~da no R. Na
Tabela 2.1 estáo resumidas algumas delas.
Exemplo
Suponha que vocé precise criar urna sequéncia de números
inteiros de 1 a 10. Entretanto, va ce quer que o incremento entre os
números seja igual a 3. Ou seja, vocé deseja criar urna sequéncia com
os números 1, 4, 7 e 10. Conforme discutido anteriormente, vocé
descobriu, usando?? sequence que deve utilizar o comando seq ()
do pacote "base". Além disso, com o ?seq vocé descobriu quais
argumentos do comando seq devem ser usados. Dessa forma, digite
noprompt:
> seq(from=l,to=10,by=3)
[1] 1 4 7 10
exibido (See also); e exemplos de como utilizar o comando
(Exemples).
Para melhor entendimento, considere o seguinte exemplo de
aplica9ao da ajuda do R.
7 Detalhadosno item "Sobre comandos e argumentos".
De maneira geral, a ajuda dos comandos inclui uma descricáo
(Description);urna explicacáo de como usar o comando (Usage);
detalhes sobre ¡os argumentos (Arguments), também chamada s de
parámetros 7; detalhes que sejam importantes para o entendimento do
comando e, ou, de seus argumentos (Details); uma descricáo do
resultado esperado (Value); a lista com a(s). referénciats)
bibliográfica(s) relacionada(s) ao comando (References); sugesto es de
comandos relacionados ou similares ao comando que está senda
Figura2.2 - Ajuda do comando seq () .
too the 9tarting and (;"aximal) end vaLues oi th~.·~equence. Of
length '1' unless just 'tram' 19 supplied as an unnamed
seq along (along. r.rith)
seq=len (length. out)
seq. int (fram, ta, by, length.out, a Lonqi c í th, ... )
## Default S3 methad:
geq(from = 1, to = 1, by = ((to - from)/ (length.out - 1)),
length.out = NULL,along.r.rith = NULL,... )
geq( ... )
Usage:
Generace regular sequences. 'seq' Ls a standard generic ltl'ith a
default mechad. vaeq, int' La a primitive uhich can be muchtes ter
but has a feu restriccions. 'seq_slong' and 'seq_len' are very
fast primicives ior tu10 commancases.
R Documentat ion. package :base
o R irá entáo exibir a ajuda do comando seq (), contendo
diversas informacñes sobre este (Figura 2.2).
> ?seq
digitar, no prompt do R, o nome do comando desejado antecedido de
urna interrogacáo. Por exemplo:
Mello e Petemelli
Obs.: **Para criar um vetor com os números 1, 4, 7 e 10, por
exemplo, digite c (1, 4 , 7 , 10) no prompt do R. É importante
notar que, no R, a vírgula (,) separa elementos, como os
números dentro do comando c ( ), enquanto o ponto (.)
separa decimais, por exemplo no número pi, que vale
3.141593...
Obs.: *Tudo que for digitado após o símbolo # na mesma linha de
comando será ignorado pelo programa. Este recurso será
muito usado neste material.
c()Concatenar valores**
rm(x,y)Remove os objetos x e y
rm(x)Remove o objeto x
ls ()Lista todos os objetos na sessáo atual do R
Sai do programa q()
NADado ausente
Separa dois comandos numa mesma linha
#Faz que o R ignore o que será digitado*
Comando
Tabela 2.2 - Alguns símbolos e comandos importantes
A Tabela 2.2 mostra alguns símbolos e comandos básicos do R.
> seq (by=3, to=lO, from=l)
[1] 1 4 7 10
Alguns comandos possuem valores j á definidos como padráo
(default) para determinados argumentos. O comando ci tation () ,
por exemplo, usado para aprender como citar o R ou um pacote
específico, tem o primeiro argumento, package, definido como
=base. Assim, se vocé digitar apenas citation () o R mostrará
como citar o pacote base, ou seja, como citar o R. Caso va ce queira
saber como citar, por exemplo, o pacote boot (CANTY; RIPLEY,
2012; DAVISON; H1NKLEY, 1997), deve-se definir isso
explícitamente com citation (package="boot") 'ou apenas
ci tation (lIboot 11 ) •
31Comer;andoa Usaro R
Conforme mencionado, oRé feito de inúmeros comandos
agrupados em pacotes. Estes comandos sao executados pelos seus
respectivos nomes, seguidos de parénteses ( ). Quando vocé digita o
nome de um comando, mas nao abre e fecha parénteses, o R exibirá o
código programado para aquele comando. O comando help (), por,
exemplo, é usado para exibir a ajuda associada a determinado comando,
como mostrado anteriormente. Para tanto, vocé deve digitar help () e,
entre parénteses, colocar o nome do comando do qual vocé quer ver a
ajuda (por exemplo: help (seq () i). Mas quando é digitado apenas
heLp, o R exibe o código programado no comando help (). Portanto,
todos os comandos do R devem ser realizados seguidos de parénteses
( ), mesmo que nada seja digitado entre os parénteses, por exemplo,
1s (), como será ainda detalhado neste capítulo.
Os comandos, por sua vez, possuem argumentos que definem
como O comando será executado. No exemplo apresentado
anteriormente com o comando seq (), definimos os argumentos
f r om; to e by iguais a 1, lQ e 3, respectivamente. O comando seq
possui outros argumentos, como Lenq t.h i out; e a Lonq i w i t.h, mas
nao é necessário utilizá-los no exemplo,
Os argumentos dos comandos sao definidos usando o sinal de
.igualdade (=) e separados uns dos mitras por uma vírgula (por
exemplo from=l, to=lO, by=3). Os nomes dos argumentos devem
ser digitados explicitamente se estiverem fora de ordem. Por exemplo:
como o primeiro, o segundo e o terceiro argumentos do comando
seq () sao exatamente from, to e by, o mesmo resultado do
exemplo anterior podería ser assim obtido:
> seq(l,lO,3¡)
[1] 1 4; 7 10
Contudo, se trocarmos a ordem dos números, o resultado será
completamente diferente. Tente:
> seq (3, 10, 1)
[1] 3 4 5 6 7 8 9 10
Mas, se digitarmos explícitamente os nomes dos argumentos,
mesmo fora de ordem, teremos o resultado desejado. Tente:
Sobre Comandos e Argumentos
Mello e Petemelli30
8 Para diferenciar os comandos já existentes nos pacotes do R daqueles que vecé pode programar
a qualquer momento (para detalhes, veja o Capítulo 7), sempre que algum processo envolver
um comando programado por vecé, nós o chamaremos defunr;tio.
Obs.: Voce tambémpode apagar todos os objetos da memória usando
o menu: no Windows, "Mise -> Remover todos os objetos"; no
Mac OS X, "Workspace -> Clear Workspace"; no RStudio,
Obs.: Cuidado ao usar este comandopois uma vez excluído o objeto,
este se toma irrecuperável.Além disso, o comando ora citado
para remocüo de todos os objetos nao exibe mensagem de
confirmacdo de exclusiiol
#remove TUDO!> rm(list=ls())
Os objetos também poderiam ser removidos separadamente
fazendo-se, em substituicáo ao comando anterior, rm (A) e, depois,
rm (B).Para remover TODOS os objetos da sua sessáo atual do R
digite:
#cria o objeto A
#cria o objeto B
#remove os objetos A e B
> A<-l
> B< -2
> rm(A,B)
Há um comando no R para remover objetos: remove (), ou
simplesmente rm ().Para usa-lo, basta fornecer o nomedo objeto a ser
removido:
Removendo Objetos
nesse caso, único elemento. Esse comando é implícito no comando
print (), ou seja, escrevendo print (x) obteríamos o mesmo
resultado que escrevendo apenas x (dentro de funcóes", esse comando
deve ser usado explicitamente).
Cuidado ao atribuir nomes a objetos! No exemplo, havíamos
inicialmente criado o objeto x com o valor 10. Posteriormente, ao
esc~ever x< -sqrt (4),o valor contido no objeto x foi substituído por
2. E um equívoco bastante comum ao iniciante que trabalha com o R.
Portanto, atencáo ao atribuir nomes a novos objetos, para que nao se
percam informacóes importantes armazenadas em objetos já existentes.
a UsaroR
[1] 2
Como visto anteriormente, o número 1 entre colchetes
significa que a visualizacáo do objeto inicia-se pelo seu primeiro e,
Outro Exemplo
Poi mostrado superficialmente no início deste capítulo e será
detalhado no Capítulo 4 que o R pode ser, usado para fazer cálculos. E
vocé também pode armazenar o resultado de um cálculo em um objeto
qualquer. i
> x < - sqrt (4)#x recebe o valor da oper acao indicada
Para mostrar o conteúdo do objeto x criado, digite apenas o
nome do objeto no promptdo R, como a seguir:
> x
Observe que existe diferenca entre maiúscula e minúscula
(mesmo para o Windows)
> x
[1] 10
> x
[1] 6
#0 objeto x receberá o valor 10
#0 objeto y.A receberá o valor 15
#0 objeto X receberá o valor 6
#0 objeto Y1 receberá o valor 13
> x<-10
> 15->y.A
> X<-6
> Yl=13
Exemplo
Um objeto pode ser criado com a operacáo de atribuicáo, a qual
se denota como urna flecha, com o sinal de menos' e o símbolo > ou <
dependendo da direcáo em que se atribui o objeto. A atribuicáo
também pode ser feita com o sinal de igualdade '''=''. Porém, essa
_forma nao é muito usual e será evitada neste livro. É importante dizer
que o nome de um objeto deve comecar com urna letra qualquer,
maiúscula ou minúscula, que pode ser seguida de outra letra, número
ou caractere especial, como o ponto.
Criando Objetos
Manipulando Objetos
Mello e Peternelli32
A sequéncia numérica que criamos anteriormente, por exemplo,
é entendida pelo R como um objeto no qual os dados estáo
estruturados como um vetar (vector).Para fazer análises estatísticas
em geral, dados estruturados como data.frames sao bastante
utilizados. Os nomes dos comandos que criam cada urna das estruturas
mencionadas na Tabela 2.3 sao exatamente aqueles listados na coluna
Objeto que permite combinar diferentes estruturas de
dados num único objetolist
Parecido com a estrutura de matriz, mas permite
colunas de diferentes tipos em ummesmo objetodata.f rame
Vetor que representa dados categóricosfator
Pode conter uma (vetor), duas (matriz) ou mais
dimensóesarray
Matriz == array com duas dimensóesmatrix
Vetor com um ou mais elementos == array com urna
dimensáovector
DescrícáoEstrutura
Tabela 2.3 - Estruturas de dados mais usadas no R
No R, os dados contidos em um objeto podem estar organizados
em diferentes estruturas. A Tabela 2.3 lista as estruturas de dados mais
usadas.
Estrutura de Dados
armazena como um objeto; o resultado de urn teste t também é um
objeto (veja Capítulo 11); ou mesmo quando vocé cría urna sequéncia
numérica, como fizemos anteriormente, o R a entende como um
objeto. Contudo, existem diferentes propriedades que caracterizam os
objetos e sao elas que influenciam a interacáo que cada comando irá
ter com um objeto do R. Em urna análise estatística, por exemplo,
mesmo que dais objetos contenham valores idénticos, os resultados
diferem-se quando esses possuem propriedades diferentes. A maneira
que os comandos atuam nos objetos também depende de suas
propriedades.
a UsaroR
Conforme mencionado várias vezes, o R trabalha com objetos.
Quando vocé importa seu banco de dados para trabalhar no R, ele o
Propriedades dos Objetos
Provavelrnente, vocé nao terá razáo para fazer isso com frequéncia,
ou talvez nunca precise, mas serve para mostrar como o R funciona.
[1] "a" "bll "C" IIXIl "y" IIZIl
Note que o resultado é impresso como um vetar, pois, de Tato,
ele é um vetar! No caso, um vetar de caracteres com os nomes dos
objetos. Como em qualquer outro comando do R, vocé pode
armazenar o resultado em um objeto, inclusive a ls().Veja:
> obj<-ls() #armazena a lista de objetos
> obj #exibe a lista guardada no objeto "objll
> a<-l; b<-2; c<-3 #";" para separar comandos
> X<_"USO"; y<-lIdocomandov : z c -v Li s t t l 11
> x;y;z # exibindo os objetos "x", "y" e "z"
[1] "uso 11
[1] "do comando:'
[1] "listO 11
> ls() #lista todos os,objetos existentes na memória
Exemplo
Agora que vocé já sabe como criar ou remover objetos na sua
Sessao do R, certamente quer ter controle sobre eles ou sobre o que
restou deles. O comando 1s () mostra os objetos que existem em sua
sessáo atual do R.
Listando Objetos
"Session -> Clear Workspace". Nesses casos, será exibida
urnamensagem de confirmacüo.
Mello e Petemelli34
Obs.:No R, ruio épreciso escrever TRUE ou FALSE,podem-se usar as
abreviacáes (sempre maiúsculas) T e F, respectivamente.
Experimente digitar x <-T e depois y <-TRUE e compare os
resultados.
#equivalente a sornar 2+0> 2+falso
[1] 2
[1] 3
#equivalente a sornar 2+1
> falso<-FALSE
> mode (falso)
[1] Illogical"
> 2+verdadeiro
#objeto lógico FALSE
#verificando o tipo
c#objeto lógico TRUE
#verificando o tipo
> verdadeiro<-TRUE
> mode(verdadeiro)
[1] Illogicalll
Vale relatar também que o R interpreta o tipo lógico como urna
variável booleana, em que o valor zero representa o FALSE (falso) e o
valor um representa o TRUE (verdadeiro).Veja:
Note que os elementos do tipo caractere (character) sao
tratados no R com O uso de aspas.
Erro em 3 + nome : argumento nao numérico para
operador binário
#operac;:aomatemática com Ilnomell> 3+nome
[1] 5
#operac;:aomatemática com Ilvalorll> 3+valor
#criando um objeto numerlCO
#verificando o tipo do objeto
> valor<-2
> mode (valor)
[1] "nume r i.c "
#criando um objeto contendo texto
#verificando o tipo do objeto
> nome<-IlJulioll
> mode (nome)
[1] Ilcharacterll
com ele. Entretanto, oRé perfeitamente capaz de realizar essas
operacóes com objetos do tipo numérico (nume r i.c). Veja:
9 o comando mode () reporta o tipo do objeto, considerando urna reestruturacáo do comando
typeof (). Outros dois comandos interessantes sao o s to raqe .mode (), que permite
visualizar como o R armazena determinado objeto na memória física, e o class (), que
mostra a classe do objeto, mais voltada para o ambiente de programacáo do R (veja o
Capítulo 7) e de criacáo de gráficos (veja o Capítulo 8)"
Cada objeto pode ter apenas um tipo. De maneira geral,
determinado vetor, matriz, array ou fator pode possuir somente um
único tipo, entre: character, nume ric, logical ou complexo Já
outras estruturas de dados mais complexas, como urna lista ou um
data.frame podem ser do tipo list, que permite combinar os tipos
character, numeric, logical e complex em um mesmo objeto.
O tipo.de um <;lbjetoé o atributo que controla como o R interpreta e
manipula este objeto. Por exemplo, se um objeto contém determinado
texto (character) o R nao conseguirá fazer operacóes matemáticas
complex Números complexos
-lISt"------------Comb"ina diferent~stipos num-me~o ObjctO---
-------------------function Comandos
Verdadeiro ou falso (TRUEIFALSE)logical
numeric Números inteiros ou reais
character Textos ou caracteres
Tipo Descricño
Tabela 2.4 Principaistipos de objeto encontrados no R
Para o R, (quase) todo objeto possui atributos como tipo,
tamanho etc. Tipo e tamanho sao os atributos intrínsecos de todo
objeto. O tipo de um objeto é revelado pelo comando mode ()9.A
"I'abela2.4 lista diferentes tipos de objeto doR. "
Atributos dos Objetos
"Estrutura" daquela tabela (por exemplo, o comando matrix () cria
matrizes, o data.frame () cria data.frames). Eles seráo
frequentemente usados ao langa de todo o livro.
> is.matrix(x) #x é uma matriz?
[1] FALSE
Urna forma simples de alterar o tipo e a estrutura de dados de
um objeto é usando as, seguida de um ponto e o novo tipo ou
estrutura de dados desejada. Por exemplo:
> is.vector(x) #x é um vetor?
[1] TRUE
Quando atribuímos ao objeto escola, que era um vetor com tres
elementos, duas dimensóes (llinha e 3 colunas), o R passa a tratá-lo
como urnamatriz de 1 linha e 3 colunas. Existemmaneiras mais fáceis
de transformar um vetor em urna matriz, como será visto adiante, mas
esse exemplo serve para mostrar como os atributos dos objetos sao
importantes e podem mudar a forma corno o R controla diferentes
objetos.
Existe outra forma de verificar atributos em urn objeto, por
exemplo, usando a palavra is seguida de urn ponto e nome do
atributo a qual se deseja verificar. Esta forma aplica-se tanto ao
atributo tipo quanto a estrutura de dados.Veja:
> x<-l #criando um vetor com 1 elemento
> is.numeric(x) #x tem atributo de tipo numérico?
[1] TRUE
> is.logical(x) #x tem atriElltode tipo lógico?
[1] FALSE
"femll
attr (,"names")
[1] lIalunos""masc"
5545[1,] 100
Da mesma forma, o comaridoattr ()pode ser empregado para
atribuir um atributo a um objeto.
> attr(escola,"dim")<-c(l,3) #criando o atributo
> escola #exibindo 11escola 11
Enquanto O comando a t t r () pode ser usado para selecionar
um atributo específico.
> attr (escola,"riames.") #exibindo o atributo names
[1] v aLunos " "mascll "femll
a UsaroR
"femll
#atributos nao intrínsecos> attributes(escola)
$names
[1] "alunos" "mase"
Para o objeto "escola", por exemplo, o comando str()mostra
que ele contém tres elementos, tipo numérico (num),sendo eles os
valores 100, 4? e 55, com atributo names, com tres elementos do tipo
caractere (chr),sendo eles: alunos,mase e fem.
O comando atributes () retorna urna lista com todos os
atributos nao intrínsecos de um objeto.
Named num [1:3] 100 45 55
- attr(*, "names")= chr [L:3] "a Lunos" "mase"
"fem"
#estrutura do lIescolall> str(escola)
O comando s tr (.)mostra, de maneira compacta, a estrutura de
urn objeto.
fem
55
mase
45
"aLuno s
100
>' names(escola)<-e ("all.lnosll,"mase"I 11 fem") #nomes
'> 'escola #exibindo 11escola 11
#criando um objeto simples
#exibindo "escola"
> escola<-c(lOO,45,55)
> escola
[1] 100 45 55
#sequencia de 10 números
#tamanho do objeto lIyll
> x<-l
>,length(x)
[1] 1
> y<-seq(l,10,l)
>'length(y)
[1] 10
Além dos atributos intrínsecos (tipo e tamanho), os objetos
podem ter diversos outros atributos: nomes, dimensáo etc. Os nomes
dos elementos contidos num objeto, por exemplo, é um atributo
controlado pelo comando names () .Veja:
#criando um objeto de tamanho 1
#tamanho do objeto 11XII
Outro atributo intrínseco de todo objeto é o tamanho. Um objeto
pode conter um ou mais elementos. Por exemplo:
Mello e Petemelli
Como será visto mais detalhadamente no próximo capítulo, um
vetar pode conter apenas elementos do mesmo tipo. Entáo, urna vez
que é possível criar vetares com elementos dos tipos numérico,
caractere, lógico e complexo, existem também diferentes tipos de NA.
> is.na(pesos) #os elementos de pesos sao NA?
[1] FALSE TRUE FALSE FALSE FALSE
> is.nan(pesos) #os elementos de pesos sao NaN?
[1] FALSE FALSE FALSE F~SE FALSE
pesos<-c(62,NA,76,93,49) #0 2° nao pode ser observado
pesos #exibe pesos
[1] 62 NA 76 93 49
> is.na(y)
[1] TRUE
Note que, apesar de NaNe NAserem completamente distintos, o
resultado de is. na () para um NaNtambém é "verdadeiro" (TRUE).
Entretanto, para um elemento NA o comando i s .nan () retoma
FALSE.O NAé usado para representar um dado ausente. Por exemplo,
suponha que vocé esteja ~nsurando o .peso das pessoas que
trabalham no seu laboratório. Se, por alguma razáo, vocé nao
conseguiu coletar o peso de alguém, este será representado no seu
conjunto de dados por um NA.Veja:
#y é um NA
#y recebe NaN
#y é um NaN?
#infinito menos infinito
#dividindo zero por zero> %
[1] NaN
> Inf-Inf
[1] NaN
y<-NaN
is .nan (y)
[1] TRUE
> 2+x
[1] Ihf
Quando o resultado de urna operacáo é indefinido, ele é
representado no R por NaN.
#dois mais Lnf Lní.t o "
[1] TRUE
41Comer;ando a Usar o R
[1] TRUE
is.finite(2) #2 é finito?
> x<- Inf
> x
[1] Ini
is.infinite(x) #x é infinito?
#x recebe infinito
#exibe x
#dividindo menos dois por zero
#di v í.d.i.ndo dois por zero> 2/0
[1] Inf
> - 2/0
[.1] - tnf
O R possúi também alguns elementos especiais, como o infinito
(tanto positivo quanto negativo: Inf e Inf, respectivamente),
elementos chamados "nao número" (NaN,do ingles, Not a Number) e
valores ausentes (NA~ gQ.lñgles, Not Available; também conhecido
pelo termo missing data).
O infInito pode ser tanto o resultado de urna operacáo quanto
atribuído por vocé a determinado objeto. Veja:
Infinito, NaN e NA
[1] "1"
Note que nenhuma das duas operacñes acima foi salva. De fato,
o R apenas converteu x de vetar em matriz para exibir na tela; assim
como ele o fez com a conversáo de numérico em caractere. Caso vecé
queira salvar a conversáo, deve atribuí-la ao próprio objeto, 0)1seja:
> x<-as .matrix (x) #x recebe x como matriz
O mesmo procedimento é utilizado para conversáo de numérico
em caractere. Note que agora o R nao exibiu nada na tela após a
conversáo, mas salvoua operacáo no próprio objetó x.
#converte x para matriz> as .matrix (x)
[,1]
[1,] 1
> as. character(x) #converte x para caractere
Mello e Petemelli40
Exemplo:
> x<-c(2,3,5,7,ll) #os cinco primeiros números primos
> x #exibe o conteúdo do objeto x
[1] 2 3 5 7 11
Os argumentos de e () podem ser tanto elementos únicos
quanto outros objetos com um ou mais elementos.
Urna das principais estruturas de dados do R é o vetor
(vector).É interessante mencionar que os vetores podem armazenar
um ou mais elementos do tipo numérico, caractere, lógico ou
complexo, mas cada um deles suporta apenas um dos tipos
mencionados.
A maneira mais simples de.~rj_arum vetor é usando o comando
e () , que concatena elementos nummesmo objeto.
Vetar
Saber as diferencas entre os diversos objetos é importante para
um uso mais adequado do R. Como mostrado no capítulo anterior,
existem diferentes estruturas de dados que podem ser usados nos
objetos. As mais importantes seráo apresentadas mais detalhadamente
a seguir.
Objetos Especiais
Capít
> mean (pesos,na.rm=TRUE) #usando o argumento na.rm
[1] 70
#erro ao calcular a rnédiade pesos> mean (pesos)
[1] NA
Algunscomandos, porexémplo o mean (), que calcula a média
aritmética de um conjunto de dados, nao operam com elementos NA.
- - Entretanto, pode-se usar o argumento na. rm=TRBE como
alternativa.
#qual o ·tipode pesos?> mode (pesos)
[1] IInumericll
Por padráo, um NA é do tipo lógico, mas quando atribuído a um objeto
de um outro tipo, ele incorpora a propriedade "tipo" deste objeto.
> mode (NA) #qual o ,tipopadrao de NA?
[1] IIlogicalll
Mello e Petemelli42
> c(rep(O,10),rep(1,5)) #concatenando repeti~5es
[1] O O O O O O O O O O 1 1 1 1 1
#cria urnarepeti~ao
111 1
#outra possibilidade
1 2 1 2 1 2 1 2 1 2 1 2 1 2
> rep (1,10)
[1] 1 1 1 1 1 1
> rep (c(1,2),10)
[1] 1 2 1 2 1 2
Repeticóes
Outro comando útil-para -produzITvetares é o rep (),que
retorna o primeiroargumentorepetido o número de vezes indicadopelo
segundoargumento(times):
Obs.: LETTERS, letters, month. abb, month. name e pi silo as
chamadas "built-in constants". Silo constantes implementadas no
..'~'~~pacote base do R. Experimente digitar pi no prompt do R para
ver o resultado! Para saber mais detalhes digite ? le t terso
[1] "j" "i" "h" "g" "f" "e"
> letters[10:5] #minúsculas e seq. decrescente
[1] "A" "B" "e" "D" "E"
Como mencionado no capítulo anterior, os númerosentre
colchetes nao fazem parte do objeto, apenas indicam a posicáo do
vetar naquele ponto. Verifica-se que [1] aponta que o primeiro
elemento do vetar é o elemento 100; [12]indica que a linha seguinte
corneca pelo décimo segundo elemento do vetar (89), e assim por
diante.
._ Usando LETTERS ou letters também é possível gerar
vetares com letras (nesse caso, o resultado será do tipo caractere).
Veja:
> LETTERS [1:5] #Bequencia de letras maiúsculas
#sequencia decrescente de 100 a 50
#exibe o conteúdo do objeto
> longo<-100:50
> langa
Se o vetar é muito langa e nao cabe em urna linha, o R vai usar
as linhas seguintes para continuar imprimindo o vetar.
Erro em seq.default(lO, 1, 3) : sinal errado no
argumento 'by'
> seq(10,l,-3) #usando incremento negativo
[1] 10 7 4 1
> seq(1.5,5.5,O.5) #podem-se usar fra~5es
[1] 1.5 2.0 2.5 3.0 3.5 4.0 4.5 5.0 5.5
Para sequéncias de números inteiros, em que o incremento é
igual a unidade (tanto positiva quanto negativa), há ainda outra forma
de se gerar um vetor: usando-seos "daispontos".Veja:
> a<-1:10 #cria sequencia de inteiros de 1 a 10
> a #exibe o conteúdo do objeto a
[1] 1 2 3 4 5 6 7 8 9 10
#ordem inversa, equivocada
> seq(l,10,2)
[1] 1 3 5 7 9
> seq(10,l,3)
#observe que nao terminará em 10
[1] 1 2 3 4 5 6 7 8 9 10
#sequencia de inteiros de 1 a 10> seq(1,10,1)
No capítulo anterior, usamos o comando seq()para gerar um
vetar com urna sequéncia numérica. De fato, urna das maneiras mais
fáceis de se produzirem sequéncias numéricas de valores é usar o
-.comando seq(), que tem como argumentos o início (f rom),o fim
(to)e o incremento (by)da sequéncia, respectivamente.
#adicionando tres números primos [1] 100 99 98 97 96 95 94 93 .92 91 90
#exibindo y [12] 89 88 87 86 85 84 83 82- 81 80 79
11 13 17 19 [23] 78 77 76 75 74 73 72 71 70 69 68
[34] 67 66 65 64 63 62 61 60 59 58 57
[45] 56 55 54 53 52 51 50
45Objetos Especiais
Scquéncias
y<-c(x,13,17,19)
> y
[1] 2 3 5 7
Mello e Petemelli44
> xmatl #exibe a matriz criada
[,1] [,2].[,3]
[1, ] 1 5 9
[2,] 2 6 10
[3,] 3 7 11
[4,] 4 8 12
xmat2<-matrix(x,nrow=4) #matriz de 4 linhas com x
Exemplo
> x<-1:12 #cria urnasequencia de 1 a 12 em x
> xmatl<-matrix(x,ncol=3) #matriz de 3 colunas com x
Há várias formas de criar uma matriz. O comando matrix ()
recebe um vetar como argumento e o transforma em uma matriz de
acordo com as dimensñes especificadas,
Criando Matrizes
Tuda o que foi feito até aqui baseou-se em vetares. Porém, o R
também é capaz de operar matrizes. Veja a seguir- como criar e
manipular matrizes.
Matriz
> x[-c(1,3)] #todos, menos o primeiro e o terceiro
[1] 9 7 6 5 4 3 2 1
> x[-9] #todos, menos o nono elemento de x
[1] 10 9 8 7 6 5 4 3 1
Exemplos
Outra facilidade extremamente útil é utilizar índices precedidos
do sinal de menos (como se fossem valores negativos) para eliminar
elementos de um vetar.
> x[x<6] #apenas os elementos menores que 6
[1] 5 4 3 2 1
> x[c(l,4)] #primeiro e quarto elementos
[1] 10 7
Outra maneira de acessar determinados elementos de um vetar é
construindo expressóes lógicas. Suponha que vocé queira selecionar
no vetar x criado no exemplo anterior apenas os elementos cujo valor
seja menor que seis. Entáo, vocé pode digitar:
#do quinto ao sétimo elemento
#apenas o terceiro elemento de x
#sequencia de 10 a 1
#exibindo x
8 7 654 3 2 1
Exemplos
> x<-10:1
> x
[1] 10 9
> x [3]
[1] 8
> x [5:7]
[1] 6 5 4
Os dementas armazenados em um vetar podem ser acessados
através dos chamada s índices, com o uso de colchetes [ ].
Índices .em Vetores
> rep(4:1,l:4) #veja este exemplo
[1] 4 3 3 2 2 2 1 1 1 1
> #para cada valor, um número de repetí.cóes
> rep(c(99,88,77),c(3,l,2))
[1] 99 99 99 88 77 77
Exemplos
Se ambos os argumentos tém mais de um elemento, cada
elemento do primeiro argumento será entáo associado ao elemento
correspondente do segundo argumento.
Podem-se ainda usar objetos como argumentos:
X<-10
rep(c(1¡2),X) #repetic;aode Jlc(l,2)JIX vezes
[1] 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2
Mello e Petemelli
Exemplo
> x<-matrix(10:l,ncol=2) #criando urna matriz qualquer
Há outros comandos que podem ser usados para construir
matrizes como cbind() e rbind(). Estes comandos concatenam
colunas ou linhas, respectivamente, na matriz (ou vetar) original.
Mais Informacóes sobre Construcáo de
Matrizes
Mean 3rd Qu. Max.
6.50 9.25 12.00
Se desejar um resumo de todos os elementos da matriz, basta
transforma-laemum vetar antes deusar o comando surnmary () .
> surnmary(as.vector(xl))
Min. 1st Qu. Median
1.00 3.75 6.50
V4
Min. : 10. O
. 1s t Qu.: 10 . 5
Median : 11. O
Mean :11.0
3rd Qu. : 11. 5
Max. : 12. O
V2
Min. : 4. O
l..s t Qu.: 4 . 5
Median: 5. O
Mean :5.0
3rd Qu. : 5.5
Max. : 6. O
V3
Min. :7. O
1st Qu.: 7 .5
Median : 8. O
Mean :8.0
3rd Qu. : 8.5
Max. : 9. O
o valor retornado é um vetar com dais elementos (que
correspondem as duas dimensóes da matriz): o primeiro mostrando o
número de linhas e o segundo o número de colunas da matriz. O
comando surnmary () também pode ser usado para obter informacóes
de qualquer objeto, inclusive de matrizes. Quando utilizado com
matrizes, ele opera nas linhas da matriz como se cada urna delas fosse
um vetar, calculando algumas medidas descritivas:
> surnmary (xl)
Vl
Min. : l. O
1st Qu.: 1.5
Median :2.0
Mean :2.0
3rd Qu. : 2.5
Max. : 3. O
49Objetos Especiais
#matri2 no objeto xl
#dimenséSes de xl
> x~<-matrix(1:12,ncol=4)
> dim(xl)
[1] 3 4
Pode-se verificar a dimensáo de urna matriz com o comando
dim():
Obtendo Informacóes sobre a Matriz
> matrix(O,nrow=4,ncol=3) #matriz de zeros
[,1] [ , 2 J [,3]
[1, ] O O O
[2, ] O O O
[3, ] O O O
[4, ] O O O
Nate que até agora as matrizes foram criadas definindo-se o
número de colunas ou o número de linhas. De fato, como estamos
usando os valores de x (12 elementos) .para preencher a matriz,
precisamos definir apenas um dos dais argumentos. Mas podem-se
criar também matrizes com um único valor definindo ambos os
argumentos de urna vez. Veja:
> matrix(x,ncol=3,byrow=T)#preenchendo por linhas
[,1] [,2] . [,3]
[1, ] 1 2 3
[2, ] 4 5 6
[3, ] 7 8 9
[4, ] 10 11 12
Neste exemplo foram construídas matrizes de tres colunas e
quatro linhas, usando-se os números de 1 a 12 do vetar x. Note que
as matrizes sao preenchidas ao langa das colunas. Para que a matriz
-.seja preenchida por linhas deve-se alterar ó argumento byrow, que,
por padráo, está definido como FALSE, para TRUE:
> xmat2 #0 mesmo resultado
[,1] [,2] [,3]
[1, ] 1 5 9
[2, ] 2 6 10
[3, ] 3 7 11
[4, ] 4 8 12
Mello e Petemelli
> z [,4] #extraindo a quarta coluna
[1] 88 88 88 88 88 88
> z [3,] #extraindo a terceira linha
[1] 8 3 3 88 8 3 3
Vocé pode extrair urna linha ou urna coluna inteira usando
apenas urn número e a vírgula, nurna ordem defmida. Assim, para
extrair urna coluna, coloque o número da coluna desejada depois da
vírgula, deixando de definir o número da linha. Para extrair urna linha,
ponha o número da linha desejada antes da vírgula e nao defina
nenhurn valor para a coluna. Quando vocé seleciona urna linha ou urna
coluna, o resultado é urn vetor.
\
Da mesma forma que vocé pode capturar partes de vetores
utilizando colchetes, conforme apresentado anteriormente, podemos
também usá-los para extrair partes de urna matriz. Urna vez que as
matrizes possuem duas dimensóes e nao apenas urna, como os vetores,
use colchetes com dois números separados por vírgula. O primeiro
número indica o número da linha, enquanto o segundo mostra o
número da coluna em que o elemento de interesse se encontra. Por
exemplo, se quisermos extrair o elemento da segunda linha e quinta
coluna da matriz z defmida anteriormente, fazemos:
> z[2,5] #elemento da linha 2 e coluna 5
[1] 9
Índices das Matrizes
#exibindo x
#criandoum vetor
#matriz com 5 linhas e 2 colunas
#conferindo se x é matriz
> x<-1:10
> dim(x) < c(5,2)
> class(x)
[1] "matrix"
> x
[,1] [,2]
[1,] 1 6
[2,] 2 7
[3, ] 3 8
[4, ] 4 9
[5,] 5 10
Como mostrado no capítulo anterior, é possível transformar urn
vetor em matriz usando-se as .matrix () ou atribuindo ao vetor O
atributo de duas dimensóes através do comando dim ().
> y<-rbind(y,c(99,99,99))#adicionando urna nova linha
> y #exibindo y
[,1] [,2] [,3]
[1,] 10 5 1
[2,] 9 4 :2
[3,] 8 3 3
[4, ] 7 2 4
[5,] 6 1 ~5:
[6, ] 99 99 99
Podem-se usar cbind () e rbind() também com a fmalidade
de "juntar" matrizes, Veja:
> z~-cbind(y,rep(88,6) ,y)
[,1] [,2] [,3] [ ,4] [,5] [,6] [,7]
[1,] 10 5 1 88 10 5 1
[2,] 9 4 2 88 9 4 2
[3,] 8 3 3 88 8 3 3
[4, ] 7 2 4 88 7 2 4
[5,] 6 1 5 88 6 1 5
[6,] 99 99 99 88 99 99 99
#adicionando urna 3 ª coluna .
#exibindo y
#exibindo x> x
[,1] [,2]
[1, ] 10 5
[2,] 9 4
[3, ] 8 3
[4, ] 7 2
[5,] 6 1
> y<-cbind(x,1:5)
> y
[,1] [,2] [,3]
[1,] 10 5 1
[2,] 9 4 2
[3, ] 8 3 3
[4, ] 7 2 4
[5,] 6 1 5
Mello e Petemelli
Existem duas maneiras fáceis de se criar um array. A primeira
delas é atribuindo dimensóes a um vetor com o comando dim ( ) .
Criando Arrays
//
Os arrays sao muito similares aos vetores e matrizes, mas
podem ter qualquer número de dimensóes, De fato, para o R um array
é uro simples vetor com o atributo de dimensóes (dim)
proporcionando a OP9aO°de criar-,· também, nomes para essas
dimensóes através do atributo dimname s.
Array
Note que o argumento arr. ind, quando definido como TRUE,
faz com que o comando which () retorne as coordenadas (nesse caso,
matriciais) dos elementos que atenderem ao critério definido.
> which(z>50,arr.ind=T)
row col
[1, r 6 1
[2, ] 6 2
[3, ] 6 3
[4, ] 1 4
[5, ] 2 4
[6, ] 3 4 o_
[7 , ] 4 4
[8, ] 5 4
[9, ] 6 4
[10, ] 6 5
[11, ] 6 6
[12, ] 6 7
o R também é capaz de identificar o índice de um ou mais
elementos que atendam a determinados critérios. Por exemplo,
suponha que vocé queira identificar na matriz z, do exemplo anterior,
os elementosmaiores que 50.Vocé pode digitar:
#quais elementos sao maiores que 50
53Objetos Especiais
Obs.:De forma análoga, podem-se utilizar expressáes para
. selecionar colunas que atendam a certo critério, ou mesmo
combinar expressiies para linhas e colunas, quando
conveniente.
Assim como para os vetores, express6es lógicas também
podem ser usadas noOsíndices de matrizes pari::-oosdecionaros
elementos que atendam a determinado ocritério. Suponha, por
exemplo, que vocé queira selecionar os elementos da terceira linha
de z que sejam maiores que 5. Veja: o
> z[3,z[3,]>5] #valores da linha 3 maiores que 5
[1] 8 88 8
De maneira simplificada vocé utilizou os índices da matriz.
oQuando definiu como 3 o valor antes da vírgula, vocé deu um
comando ao R para selecionar os elementos da linha 3 da matriz. No
segundo índice, a expressáo z [3 r ] > 5 sinaliza ao R para identificar na
terceira linha da matriz z os elementos maiores que 5.
[,1] [,2] [,3]
[1, ] 10 5 1
[2, ] 9 4 2
[3, ] 8 3 3
[4, ] 7 2 4
[5, ] 6 1 5
[6, ] 99 99 99
> z[c(2,3) ,c(4,6)] #tomando urna submatriz 2x2
[,1] [ ,2]
[1, ] 88 4
[2, ] 88 3
> z[c(l,3,5) ,] #extraindo as linhas 1, 3 e 5
[,1] [,2] [,3] [,4] [,5] [,6] [,7]
[1, ] 10 5 1 88 10 5 1
[2, ] 8 3 3 88 8 3 3
[3, ] 6 1 5 88 6 1 5
> Z [,5; 7] #extraindo as colunas de 5 a 7
Pode-se ainda extrairmais de urna linha ou coluna utilizandoum
vetorde índices.Nesse caso, o objetoresultanteé urnamatriz.Veja:
Mello e Petemelli52
Obs.: Como mencionado no Capítulo 1, quando uma linha de
comando está incompleta, o R muda o sinal de prompt de ">"
para "+ ", indicando ao usuário que o que será digitado
naquela linha é a continuacdoda linha de comando anterior.
$alt
[1] 11 650m" 1750m"
> dirnnarne s (x) #' 11dirnnarne s 11 de x
$lat
[1] "10°1518" 1110°2018"
$long
[1] "22°15IWI1 "22°10IWII 1122°051WI1
> dirn (x) "'~~" ·#"dirn" de x
[1] 2 3 2
long
lat 22°151W 22°10'W 22°051W
10°1518 7 9 11
10°2018 8 10 12
750m
lat
10°1518
10°2018
, alt
650m
long
22°151W 22°10'W 22°05'W
135
246
alt
#exibe x> x
long=c (1I22°15IWII,1I22°10 IWI1,1122°05IWI1),
al t=c ( 11 65Orn11, 1175Orn11) )
+
+
> dim(y)
[1] 2 3 2
É possível também atribuir nomes as dimensóes do array
usando o comando dimnarne s ( ) . Entretanto, é preciso que os nomes
estejam no formato de lista (list) que será discutido adiante. Veja:
> dirnnarnes ex) <-list ( #criando a Lí.s.t a
+ lat=c(lIl0015'8I,"10020'811)),
#exibe o atributo lldirnll de y
55Objetos Especiais
#y é urn array?> is.array(y)
[1] TRUE
#exibe o atributo lldirnll de x> dim (x)
[1] 2 3 2
#:i( é urn array?> is. array (x)'
[lJ TRUE
Podemos comparar e testar os resultados:
[,2] [,3,]
9 11
10 12
[,1]
[1,] 7
[2,] 8
, , 2
[,2] [,3J
3 5
4 6
[, 1]
[1,] 1
[2,] 2
, , 1
#array corn 3 dirnensoes
#exibe y
>: '. " , .:' , '.
'> y<- arráy(1:'i2:, ¿'(2, 3, ~) )
> y
Exemplo ",.
A outra maneira é usando o comando array (), em que o
primeiro e segundo argumentos sao um vetar de dados e .suas
dimensóes, respectivamente,
[,Ü [,2] " [, ,3] ,
[1,] 1 3 5
[2, ] 2 4 6
, , 1
Exemplo
> x<-1:12 #cria vetor ern x
> dim (x) < - c(2, 3, 2} #atr'ibuindo 3 d.i.mensoes a x
> x #exibe x
Mello e Petemelli54
Os data.frames sao muito semelhantes as matrizes, pois tém
linhas e colunas e, portantev.. duas dimensñes. Entretanto,
diferentemente das matrizes, colunas diferentes podem armazenar
elementos de tipos diferentes. Por exemplo, a primeira coluna pode ser
numérica, enquanto a segunda, constituída de caracteres.
Constituem os data.frames urna das melhores formas de
armazenar dados, urna vez que cada linha corresponde a urna unidade
(também chamada de instancia ou observacáo) e cada coluna
representa urna variável (ou tributos) observado em cada unidade.
Entretanto, é necessário que cada coluna tenha o mesmo tamanho.
\Data.frame
> zfac[3:5] #do terceiro ao quinto elemento de zfac
[1] 2 2 3
Levels: 1 2 3
> z<-c(l,l,2,2,3,3)
> zfac<-as.factor(z)
> zfac
[1] 1 1 2 2 3 3
Levels: 1 2 3
É importante mencionar que, nos fatores, os índices funcionam
como em vetares. Veja:
#cria um vetor
#transforma z em fator
#exibe zfac
De fato, dados estruturados como fatores sao extremamente
importantes em análises estatísticas, por exemplo nas Análises de
Variáncia (ANOVA - veja Capítulo 12). Vocé pode converter um
vetor em fator usando o comando as .factor ().
[1] "M" "F"
#exibe os níveis do fator y> levels(y)
Como se nota, os fatores apresentam diferentes níveis que
funcionam como categorias nas quais os dados- estáo organizados.
Vocé pode verificar os níveis de um fator usando o comando
levels ().
57Objetos Especiais
$class
[1] "factor"
#atributos de y> atributes(y)
$levels
[1] "M" "F"
> y< -gl (n=2,k=3, labels=c ("M", "F")) #cria urn fator
> y /: #exibe y
(1] M M M F F F
Levels: M F
Levels: F M
(1] M M M F F F
#fator> x< -factor (c("M", "M", "M", "Fu, "F", "F") )
> x .,#exibex
Exemplo
Os fatores sao vetores em que os elementos pertencem a urna ou
mais categorias temáticas. Por exemplo, se numa amostra há homens e
mulheres, um vetor contendo as categorias masculino (M) e feminino
(F) é representado no R como um fator.
Pode-se criar um fator usando o comando factor (), ou o
comando gl ().
Fator
> x(l,2,l] #elemento lat=l, 10ng=2 e .alt=l
(1] 3
> x[l,2,] #elernento lat=l, 10ng=2 e alt=todo~
650rn 750m
3 9
Exemplos
Os índices em arrays funcionarn de maneira semelhante aos
índices de vetores e matrizes, de modo que os elementos de cada
dimensáo do array sao separados por vírgula dentro de colchetes.
Índices em Arrays
Mello e Petemelli56
$names
[1] 11Nome " 11ldade" "Sexo" "NF"
$row.names
[1] 1 2 3 4 56
$class
[1] "data. frame"
#exibe os atributos> atributes(escola)
Note que urna numeracáo automática surgiu para cada urn dos
alunos. Isso se deve em razáo de os data.frames, ao serem criados,
possuírem atributo que representa nomes das linhas (row.names)
que, por padráo, sao números inteiros qu~ váo do um ao número total
de linhas. Vocé pode ver todos os atributos do seu objeto usando:
> escola<-data. frame (Nome,ldade,Sexo,NF) #criando
> escola #exibindo
-Nome ldade Sexo NF
1 José Santos 17 M 92
2 Angela Dias 17 F 75
3 Aline Souza 16 F 81
4 Mayara Costa 15 F 87
5 Lara Lins 15 F 90
6 Nícolas Barros 13 M 88
> NF<-c(92,75,81,87,90,88)
> NF
[1] 92 75 81 87 90 88
Agora que cada um dos vetores que compóem as colunas
(Tabela 3.1) está criado, vocé pode reunir tudo em um objeto com a
estrutura de dados de um data.frame.
#vetor NF
#exibe NF
#fator> Sexo<-factor (c(IIMII,"FII,IIFII,"F", IIF","Mil))
> Sexo -#exibe Sexo
[1] M F F F F M
Levels: F M
#exibe ldade> ldade
[1] 17 17 16 15 15 13
59Objetos Especiais
> ldade<-c(17,17,16,15,15,13) #criando o'vetor ldade
#exibe Nome
IIAngela Dias"
"Mayara Costa 11
IINícolas Barrosll
> Nome
[1] "José Santosll
[3] "Ali.neSouza"
[5] uLara Linsll
+
+
+
+
"Angela Dias",
"Aline Souza",
"Ma~ara Costa" ,
"Lara Lins",
"Nícolas Barros")
+
#criando o vetor Nomes> Nome<-c("José Santos",
_Cada ..urn dos alunos compóe urna unidade ou instancia,
enquanto as diferentes variáveis, representadas nas colunas, tém
valores correspondentes a cada urn dos alunos, Note que a coluna
."Nome". é uro vetor de caracteres; a coluna "Idade", assiin éomo a
coluna "NF" (nota final) sao vetores numéricos; e a coluna "Sexo" é
um fator. Os data.frames sao ideais para armazenar dados com a
estrutura apresentada, Vocé poderia montar seu data.frame, criando
cada urna das colunas ejuntando-as posteriormente. Veja:
Nome Idade Sexo NF
José Santos 17 M 92
Angela Dias 17 F 75
Aline Souza 16 F 81
Mayara Costa 15 F 87
Lara Lins 15 F 90
Nícolas Barros 13 M 88
Tabela 3.1- Exemplo de dados que podem ser representados como urn
data.frame
Exemplo
Suponha que vocé esteja realizando um experimento para
avaliar o desempenho escolar de urna classe de alunos, Para cada
aluno (unidade), sao registrados o nome, a idade, o sexo e a nota final.
Seus dados, portanto, podem ser organizados como na Tabela 3.1.
Mello e Petemelli
> escola$Nome[2] #segundo objeto da coluna Nome
[1] IIAngela D'i.as"
escola$Nome[1:3] #tres primeiros elementos de Nome
[1] IIJosé Santosll "Angela Diasll IlAline Souzall
IIAngela Diasll
IIMayara Costall
IINícolas Barrosll
[1] IIJosé Santosll
[3] IIAline Souzall
[5] IILara Linsll
#acessando---acoluna Nome> escola$Nome
A outra maneira de acessar os elementos de um data.frame é
usar o nome do objeto (data.frame), o símbolo $ ~ o nome da coluna
de interesse. Veja:
IIAngela Diasll
IlMayara Costall
IINícolas Barrosll
[1] IIJosé Santosll
[3] IIAline Souzall
[5] IILara L'i.ns"
> escola[,l] <-as.character(escola[,l]) _~converte
> escola[,l] #agora é caractere
[1] José Santos Angela Dias Aline Souza
[4] Mayara Costa Lara Lins Nícolas Barros
6 Levels: Aline Souza ... Nícolas Barros
#veja que é fator> escola [,1]
Repare que apesar de "Nome" ter sido originalmente criado
como um vetor de caracteres, o R passou a entendé-lo como um fator
dentro do data.frame. Isso· acontece porque o argumento
stringsAsFactors, por padráo definido como TRUE, converte
vetores de caracteres em fatores na construcáo do data.frame. Para que
isso nao aconteca, basta defini-lo como FALSE quando for criar o
data.frame. De forma alternativa, pode-se converter a estrutura de
dados de cada urna das colunas de um data.frame usando as, seguido
de um ponto e o nome da nova estrutura desejada. Para converter, por
exemplo, a coluna "Nome" de fator para um vetor de caracteres, faca:
Sexo NF
F 75
Nome 1dade
linha 2 Angela Dias 17
#toda a linha 2>- escola [2,]• i
#elemento da linha 2, coluna 1> escola [2,1]
[1] Angela Dias
6 Levels: Aline Souza ... Nícolas Barros
Nos objetos annazenados como data.frames, os elementos
podem ...ser acessados de duas formas. A primeira delas é usando
índices de Iinha e coluna separados por urna vírgula dentro de
colchetes, exatamente como em matrizes.
Índices dos Data.frames
Obs.: Para data.frames, podem-se usar tiemee () ou colnames ()
para listar ou alterar os nomes das colunas. O mesmo nao vale
para matrizes, em que apenas colnames () funciona.
[1] 11Nome 11 11 1dade 11 IISexoll IlNFII
Use o mesmo raciocínio para os nomes das colunas usando o
comando colnames ().
> row.names(escola) <-c(lIlinha 111 , #nome das linhas
+ IIlinha 211 ,
+ IIlinha 311 ,
+ "linha 411,
+ IIlinha 511 ,
+ IIlinha 6")
~ escola #exibe escola
Nome 1dade Sexo NF
linha 1 José Santos 17 M 92
linha 2 Angela Dias 17 F 75
linha 3 Aline Souza 16 F 81
linha 4 Mayara Costa 15 F 87
linha 5 Lara Lins 15 F 90
linha 6 Nícolas Barros 13 M 88
> names(escola) #nomes das colunas de escola
Nos data.frames, assim como em matrizes, os nomes das linhas
podem ser alterados usando-se o comando row .name s () e os nomes
das colunas utilizando-se colnames ().Por exemplo:
> escola[order(escola$NF) 1] #ordena por NF
Nome Idade Sexo NF
linha 2 Angela Dias 17 F 75
linha 3 Aline Souza 16 FJ 81
linha 4 Mayara Costa 15 F 87
linha 6 Nícolas Barros 13 M 88
linha 5 Lara Lins 15 F 90
linha 1 José Santos 17 M 92
> escola[rev(order(escola$NF)),] #órdena inversa
Nome Idade Sexo NF
linha 1 José Santos 17 M 92
linha 5 Lara Lins 15 F 90
linha 6 Nícolas Barros 13 M 88
linha 4 Mayara Costa 15 F 87
linha 3 Aline Souza 16 F 81
linha 2 Angela Dias 17 F 75
A ordenacáo das linhas de um data.frame segundo os dados
contidos em determinada coluna tambérn é extremamente útil. Veja:
Note que o nome da nova linha (linha 7) teve que ser definido
entre aspas, pois se nao usá-las, o R nao entenderla o espaco entre o
nome "linha" e b "7" e mostraria urnamensagem de erro.
Obs.:Apesar do exemplo anterior, o comando cbind () é mais
adequado quando se deseja adicionar, de uma só vez, mais de
uma coluna a um dataframe. Para adicionar apenas uma
coluna, a atribuicáo direta é muito mais simples. Por exemplo,
para adicionar a coluna "Conceito " bastaria digitar
escola$Conceitos<-c("A", "e", "B", "B"; itA", "B").
') esco La c-orbd.ndI esco La, #adicionando urnalinha
+ 111inha 71!=c(IICaiopio",12,"MII,99,"A"))
> escola #exibindo escola
Nome 1dade Sexo NF Conceito
linha 1 José Santos 17 M 92 A
linha 2 Angela Dias 17 F 75 C
linha 3 Aline Souza 16 F 81 B
linha 4 Mayara Costa 15 F 87 B
linha 5 Lara Lins 15 F 90 A
linha 6 Nícolas Barros 13' M 88 B
linha 7 Caio ,pio 12 M 99 A
81 B > escola [escola$Sexo==IM",] #exibindo só masculinos
87 B Nome 1dade Sexo NF
90 A linha 1 José Santos 17 M 92
88 B linha 6 Nícolas Barros 13 M 88
> escola<-escola[1:6,J #,selecionalinhas de 1 a 6
> escola<-escola[,-5] #excluindo a quinta coluna
> escola #exibindo escola
Nome 1dade Sexo NF
linha 1 José Santos 17 M 92
linha 2 Angela Dias 17 F 75
linha 3 Aline Souza 16 F 81
linha 4 Mayara Costa 15 F 87
linha 5 Lara Lins 15 F 90
linha 6 Nícolas Barros 13 M 88
Assim como para os vetores e matrizes vocé pode selecionar um
subgrupo de um data.frame e armazená-lo em um outro objeto ou
utilizar índices com o sinal negativo para eliminar linhas ou colunas
de um data.frame. Veja:
63Objetos Especiais
linha 1
linha 2
linha 3
linha 4
linha 5
linha 6
vocé pode manipular um data.frame adicionando ou eliminando
colunas ou linhas, , assim como em matrizes. Podem-se usar os
comandos cbind () e rbind () para adicionar colunas e linhas,
respectivamente, ',a"um data-frame. Se um nome for definido no
argumento de cbi.rid t ) ou rbind(),por exemplo, ele será associado
a nova coluna ÓU: linha, respectivamente. Veja:
>

Outros materiais

Materiais recentes

Perguntas Recentes