Baixe o app para aproveitar ainda mais
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: >
Compartilhar