- Leanpub
Transcrição
- Leanpub
Computação em R Introdução Eric Gorgens Esse livro está à venda em http://leanpub.com/comprintroducao Essa versão foi publicada em 2016-01-23 ISBN 978-85-920621-0-1 This is a Leanpub book. Leanpub empowers authors and publishers with the Lean Publishing process. Lean Publishing is the act of publishing an in-progress ebook using lightweight tools and many iterations to get reader feedback, pivot until you have the right book and build traction once you do. © 2016 Eric Gorgens Dedico este livro aos alunos e colegas que buscaram no R a solução dos seus problemas e encontraram em mim o apoio para solucioná-los. Ao ensinar, aprendi em dobro. Conteúdo Sobre o livro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 Sobre o R . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 Estrutura de dados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 Sobre o livro Bem vindo ao mundo do R. O R não é só um software, nem se resume a uma linguagem. O R é um estilo de pesquisar, estudar e ensinar. Através de seus códigos e scripts você entrará num mundo sem limites, aberto à experimentação e à troca de experiência. Um mundo em que não existe apenas uma forma de se chegar à resposta correta, mas sim uma gama de alternativas! Você deve estar se perguntando: porque começar a trabalhar com o R? A resposta passa por algumas perspectivas interessantes. O R é moderno, o R é flexível, o R é uma poderosa linguagem, o R é versátil e o R é grátis. No R, você trabalha com linhas de comando e scripts; e não clicando em botões na tela. Não se assuste. Pode parecer difícil, mas na verdade, a linguagem R é simples de aprender e bastante lógica quando pensamos em análise de dados. Aprender uma linguagem de computação tem muitas semelhanças com o aprendizado de uma língua estrangeira. A principal delas é: você aprende praticando, por isso, pratique muito! Com o R você não está limitado por uma sequência pré-definida de rotinas. O R quebra a dependência do usuário em clicar botões, fazendo com que cada análise seja realmente fruto de uma reflexão sobre as estatísticas e os dados. Este processo de reflexão e criação da análise fica documentado, passo a passo no histórico (ou script), podendo ser executado a qualquer momento, por qualquer pessoa. O usuário tem disponível um conjunto poderoso e versátil de ferramentas para explorar graficamente os resultados. Aproveite! Antes de começar uma análise estatística, explore seus dados! Só assim você irá de fato conhecer o que você tem em mãos. As ferramentas disponíveis, passam pelo acesso a vários tipos de dados, até recursos para manipulação de bases, passando pelos modelos estatísticos tradicionais e modernos. Os mais influentes acadêmicos e pesquisadores do mundo utilizam o R para desenvolver suas pesquisas. Assim as novidades nas áreas de estatística, máquinas de aprendizado e modelagem estarão primeiramente disponíveis aqui. Atualmente são mais de 2000 pacotes que potencializam o seu R disponíveis para download. Com uma imensa comunidade que continua crescendo, se você tiver uma dúvida, a chance de alguém já ter esbarrado com este problema é muito grande. O tempo médio que uma pergunta leva para ser respondida no StackOverflow (maior comunidade de programadores do mundo) é de 0,0147 dias, o que equivale a 21 minutos. E o melhor de tudo, o R é gratuito. Por se tratar de um projeto de código aberto, você pode usar o R sem nenhum custo adicional; ou seja sem necessidade de pagar por inscrições, assinaturas ou licenças. 1 2 Sobre o livro Este livro nasceu da experiência de ensinar o R para alunos de graduação e pós-graduação. Alunos que têm sede em botar a mão na massa e aprender fazendo. Com este propósito, todos os capítulos deste livro podem ser acompanhados na prática. Os exemplos podem ser testados, adaptados e modificados. Acompanhe atualizações, faça download das base de dados utilizadas ao longo do livro e conheça os outros livros da série em: http://gorgens.wix.com/compr Aqui, você irá aprender o essencial. Não temos a pretensão de ensinar tudo sobre o R. Nosso objetivo é fazer com que você entenda e sinta-se confortável com o ambiente R. Para isto, usamos uma linguagem simples e direta, com exemplos e explicações sobre o que estamos digitando e executando no R. Da sua parte, espero que seja proativo. Não digite os exercícios. Faça e entenda os exercícios! Faça modificações e veja o que acontece com o resultado. Seja curioso! Bom aprendizado. Sobre o R O R é um programa baseado em linhas de comando. Isto é, o usuário cria uma linha de código através de uma sequência de palavras e números. Ao digitar a linha no console, o R interpreta e executa a ação codificada na linha. Também é possível informar para R, um conjunto de linhas de uma única vez, que conhecemos como script. Ao processar o script no console, o R irá ler a primeira linha, interpretar e executar. Só depois que o processamento da primeira linha terminar, é que a segunda linha será lida, interpretada e executada. Esta sequência segue, até que todo o script tenha sido processado. Para que o R compreenda as linhas de comando criadas, é fundamental que o usuário conheça os comandos, seus parâmetros e a sintaxe da linguagem de interpretação. No caso de uma grafia errada, ou um parâmetro faltante o programa será capaz de interpretar, podendo até mesmo interpretar de forma equivocada. No caso do R, a linguagem utilizada recebe o mesmo nome: linguagem R. A linguagem R possui regras próprias, que chamamos de sintaxe. Estas regras precisam ser seguidas para assegurar que o programa interprete e processe as linhas com sucesso. Não se preocupe agora com os termos console e script. Na próxima seção teremos uma discussão detalhada do ambiente do R. Lá discutiremos onde encontrar e como funciona cada um destes elementos. Não se preocupe também em rodar os códigos que veremos a seguir, eles serão usados apenas para mentalizarmos alguns aspectos importantes! Ao abrir o R pela primeira vez, a janela chamada Console estará aberta e disponível. É nesta janela que os comandos serão interpretados e processados. No console, teremos algo parecido com o quadro abaixo: 1 2 3 4 5 6 7 8 9 10 11 12 13 R version 3.0.2 (2013-09-25) -- "Frisbee Sailing" Copyright (C) 2013 The R Foundation for Statistical Computing Platform: x86_64-w64-mingw32/x64 (64-bit) R is free software and comes with ABSOLUTELY NO WARRANTY. You are welcome to redistribute it under certain conditions. Type 'license()' or 'licence()' for distribution details. Natural language support but running in an English locale R is a collaborative project with many contributors. Type 'contributors()' for more information and 'citation()' on how to cite R or R packages in publications. 3 Sobre o R 14 15 16 17 18 19 4 Type 'demo()' for some demos, 'help()' for on-line help, or 'help.start()' for an HTML browser interface to help. Type 'q()' to quit R. > Veja no final do quadro a presença do sinal > que indica que o console está esperando uma nova linha de comando. Assim, se digitarmos: 2+3 O console poderá ser visto da seguinte forma: 1 > 2 + 3 Quando a tecla enter for pressionada, o R irá interpretar a linha de comando digitada, processar e então retornar o resultado: 1 2 [1] 5 > O que o R acabou de fazer? Ele pegou o valor 2 e adicionou o valor 3, retornando um vetor de um único elemento ([1]) contendo o valor 5. Como ele terminou o processamento da linha que digitamos, o sinal > aparece no final da janela, avisando que o console está pronto para executar uma nova linha. Outro sinal que pode aparecer com frequência quando você estiver digitando linhas de comando no console é o +. Ele aparece uma linha é digitada de forma incompleta. Assim, o sinal + aparece indicado ao usuário que o R continua aguardando que a linha de comando seja encerrada. Imagine que desejo realizar a soma de 2 + 5. Veja o exemplo de uma adição digitada de forma incompleta: 1 > 2 + Ao apertamos enter, o console tentará processar a soma. No entanto após o sinal +, o R espera que venha outro termo quer deveria ser somado a 2. Por isto, o R exibe um + na linha abaixo do comando digitado para informar ao usuário que algo ainda falta para que o comando possa ser interpretado. 1 2 > 2 + + Ao digitarmos 5, o termo faltante e pressionar enter, o consegue interpretar e executar a soma solicitada: Sobre o R 1 2 3 4 5 > 2 + + 5 [1] 7 > No dia a dia, dificilmente conseguiremos resolver um problema em apenas uma linha. É aí que entra em jogo o script! O R possui um editor de texto para a criação de script. Quando solicitado, uma segunda janela chamada R Editor se abre e nesta janela podemos construir uma sequência de linhas para ser no futuro apresentado ao console. Assim, é possível abrirmos uma segunda janela: o editor de script. No script é possível digitarmos uma sequência de linhas que posteriormente serão apresentados ao console. Note que o você escreve no R Editor não é processado de imediato. O processamento ocorre quando uma linha do script é levada ao console. Apenas o console consegue interpretar e processar linhas de comando. Vamos para um exemplo. Imagine que desejamos processar o script abaixo: 1 2 3 4 x = 2 print(x) x = x + 3 print(x) O próximo passo é processar linhas por linha do script. Como dissemos anteriormente, as linhas precisam ser processadas uma a uma. Se processarmos no console a primeira linha: 1 > x = 2 Digitando e pressionando a tecla enter, nada acontecerá na tela. Um novo símbolo > aparecerá abaixo da linha anterior: 1 2 > x = 2 > Não se preocupe, deu certo! O R criou na memória uma variável e assinalou a ela o valor 2. O sinal > indica que o R está pronto para receber a próxima linha de comando! Nossa próxima linha, seguindo o script, seria: 1 > print(x) Agora sim, ao pressionarmos a tecla enter, o console exibirá: Sobre o R 1 2 3 4 6 > x = 2 > print(x) [1] 2 > O console imprimiu na tela o valor 2, que está armazenado num vetor de um elemento salvo com o nome de x. Fácil não? Digitando a terceira linha do script, pressionando enter. Digitando a quarta linha e pressionando enter em seguida, o resultado será: 1 2 3 4 5 6 > x = 2 > print(x) [1] 2 > x = x + 3 > print(x) [1] 5 Você consegue descrever o que console acabou de fazer ao rodar todas as linhas do script? Fácil! Somou 2 + 3 retornando o valor 5. Vamos destrinchar o script? • • • • Primeiro criamos uma variável x que armazena num vetor de único elemento o valor 2. Em seguida pedimos para exibir a variável x. Depois pegamos o valor atual de x, adicionamos 3 e salvamos novamente em x. Finalizamos pedindo para exibir o valor atual da variável x. Agora que entendemos melhor como o R funciona, vamos conhecer o nosso ambiente de trabalho nos próximos capítulos. Quando você abrir o R pela primeira vez, uma janela de abrirá. A janela externa, maior, é o programa R propriamente dito! A janela interna, menor, é o console. 7 Sobre o R Janela do R Como já mencionamos anteriormente, podemos também trabalhar com uma segunda janela interna chamada de R Editor. É nesta janela que construímos os scripts. Clique em File -> New Script. Seu ambiente de trabalho será: 8 Sobre o R Ambiente do R Veja que quando o console está ativado, a barra de ferramentas é igual a: Barra de tarefas com console ativado Por outro lado, quando o R Editor está ativado, a barra de ferramentas muda: Barra de tarefas com o editor ativado Não perderemos tempo agora, explicando cada botão das barras de ferramentas. No entanto, vale a pena aproveitarmos para conhecer o botão Run line, or selection: Run line, or selection Este botão pode ser usado quando queremos pegar uma linha do script e processar no console. Basta selecionar a linha no script em questão, e clicar no botão Run line, or selection. Automaticamente a linha selecionada será enviada ao console e processada. Veja o exemplo abaixo, no qual selecionamos a primeira linha do script e clicamos no botão Run line, or selection. O comando foi processado da mesma forma de quando digitamos diretamente no 9 Sobre o R console. Comando run line Utilizando a mesma idéia de seleção e botão Run line, or selection, podemos enviar ao console mais uma linha de comando. Veja o exemplo abaixo: Outro comando run line O R trabalha com padrão internacional de separação decimal e separação de colunas. A separação decimal é ‘.’ (ponto). E a separação de coluna é ‘,’ (vírgula). 10 Sobre o R Agora sim convido você para colocar a mão na massa. Assim chegou a hora de instalar o R. Existem vários tutoriais na internet, bem como vídeo-tutoriais excelentes. O R roda em todos os sistemas operacionais: Mac, Windows e Linux. Uma vez instalado, você poderá acompanhar todos os exercícios do livro realizando-os diretamente em seu computador. É fundamental que você realmente coloque a mão na massa. É a única forma de errar e aprender! A partir de agora não utilizaremos mais a notação de linha ativa >. Estrutura de dados Uma variável pode assumir diferentes estruturas. As estruturas possuem propriedades que irão influenciar o que você pode ou não pode fazer com os seus dados. Uma variável que for criada como matriz, não possui as mesmas propriedades de uma variável estruturada como lista. Assim, não é possível aplicar o operador de soma a estas duas variáveis. Estas estruturas são criadas para armazenar dados. Estes dados geralmente podem ser definidos como numéricos (inteiros ou decimais), caracteres (string) ou lógicos. Algumas estruturas permitem que diferentes tipos de dados sejam armazenados ao mesmo tempo. Em outras estruturas, apenas um tipo de dado pode ser simultaneamente armazenado. Na linguagem R, não é necessário declarar uma variável antes dela ser criada. O programa já tenta determinar a melhor classe com base na primeira vez que algo for atribuído à variável. Vamos rodar a seguinte linha: 1 x = 2 O sinal = é a representação do termo atribuição, e pode ser substituído pelo sinal <-. Portanto, o comando abaixo equivale ao comando anterior: 1 x <- 2 Os comandos acima são equivalentes e podem ser interpretados como: atribua o valor 2 à variável x. Ao criar a variável x, o R irá definir x como numérico e armazenar numa estrutura de vetor, pois o 2 é claramente um número. Vetor é a estrutura mais simples que uma variável pode assumir, e somente pode assumir um mesmo tipo de dados. No exemplo: 1 a <- 2 A variável a será automaticamente definida pelo R como um vetor numérico. O principal atributo de uma estrutura do tipo vetor é o comprimento. O vetor a, por exemplo, é um vetor de comprimento um, ou seja, contém apenas um elemento. Isto pode ser comprovado através do seguinte comando: 11 Estrutura de dados 1 2 12 length(a) [1] 1 Vamos criar um script com 4 linhas de comando que criam quatro diferentes variáveis. Pegue cada uma das linhas do script abaixo e processe no console: 1 2 3 4 a <- 2 b <- c(1, 2, 3) idade <- c(2, 4, 3) experiencia <- c(1, 5, 7) Note, que quando você quer criar um vetor com mais de um elemento, é necessário utilizar a função c(). A letra c vem de components, assim, ao utilizar a função c() você está informando ao R que construa um vetor com os componentes listados dentro da função. Após rodar cada linha do script acima, você não vê, mas agora existe na memória as variáveis: a, b, idade e experiencia. Utilizando o comando length() você descobrirá que o vetor a possui comprimento igual a 1, e logo é composto por apenas um elemento. Já os vetores b, idade e experiencia possuem comprimento 3 e portanto são compostos por 3 elementos. 1 2 Length(a) [1] 1 1 2 length(b) 1 2 length(idade) 1 2 length(experiencia) [1] 3 [1] 3 [1] 3 Todos os quatro vetores são vetores numéricos, e por só armazenarem números, podem participar de operações matemáticas que não seriam possíveis em vetores de caracteres. Mas não vamos nos preocupar agora com as operações matemáticas. Logo logo voltaremos neste assunto. Agora imagine que você pegue dois vetores com três elementos cada um, e combine lado a lado estes dois vetores. O que acontece? Você acaba de criar uma matriz de duas colunas e três linhas. E se você combinar estes dois vetores de três elementos um acima do outro? Você cria uma matriz com duas linhas e três colunas. Esta “combinação” de vetores só funciona quando os elementos possuem o mesmo formato, ou seja, somente números ou somente caracteres! Matrizes nada mais são que combinações de vetores com o mesmo comprimento e tipo de dado. As variáveis estruturadas como matriz possuem portanto uma característica que o vetor não tem: dimensão. A dimensão é uma característica que indica quantas linhas e quantas colunas a matriz possui. Vamos criar uma matriz e armazená-la na variável m1: Estrutura de dados 1 13 m1 = matrix(c(2, 4, 3, 1, 5, 7), nrow = 2, ncol = 3, byrow = TRUE) O comando dim() retorna a dimensão de uma matriz. Antes de rodar esse comando para a matriz recém criada m1, qual a dimensão desta matriz? Se você respondeu 2 x 3, acertou! Agora rode o comando abaixo e tire a prova: 1 2 dim(m1) [1] 2 3 A resposta é uma matriz de dois elementos. O primeiro elemento, de valor 2, indica o número de linhas. O segundo elemento, de valor 3, indica o número de colunas. Vamos exibir o vetor para verificar visualmente o número de linhas e de colunas? Digite o comando abaixo: 1 2 3 4 m1 [1,] [2,] 2 1 [,1] [,2] [,3] 4 3 5 7 Agora podemos conferir visualmente que nossa matriz m1 realmente possui duas linhas e três colunas. Perceba também, que os três primeiros elementos (2, 4, 3) do vetor informado durante a criação da matriz foram organizados ao longo da primeira linha, e os três últimos elementos (1, 5, 7) foram organizados ao longo da segunda linha. Isto aconteceu porque pedimos que o parâmetro byrow da função matrix() fosse verdadeiro (= TRUE). E se criarmos uma nova matriz m2 com o mesmo comando da m1, alterando o parâmetro byrow para falso (= FALSE)? 1 m2 = matrix(c(2, 4, 3, 1, 5, 7), nrow = 2, ncol = 3, byrow = FALSE) 1 2 3 4 m2 [1,] [2,] [,1] [,2] [,3] 2 3 5 4 1 7 O acesso a elementos, linhas e colunas de uma matriz pode ser feito utilizando a notação de [ ] logo após o nome da matriz que se deseja manipular. Execute as linhas do script abaixo no seu console. Todas as linhas foram construídas sobre a matriz m1 que criamos há pouco. Estrutura de dados 1 2 3 4 14 m1[1,1] m1[1,] m1[,2] m1[2, 1:2] Na linha 1 do script pedimos para exibir o elemento da linha 1 e coluna 1. Na segunda linha, solicitamos que sejam exibidos todos os elementos da linha 1. Na terceira linha do script solicitamos que sejam exibidos todos os elementos da segunda coluna. Na última linha do script, solicitamos que sejam exibidos os elementos da linha 2 e colunas 1 até 2. Assim, vejamos cada comando com seu respectivo resultado: 1 2 m1[1,1] [1] 2 1 2 m1[1,] [1] 2 4 3 1 2 m1[,2] [1] 4 5 1 2 m1[2, 1:2] [1] 1 5 Dataframe é uma condição especial de combinação lado a lado de vetores. Ao contrário das matrizes, o dataframe não exige que os vetores tenham os mesmos tipos de dados. Assim, por exemplo, a primeira coluna do dataframe pode ser numérica, e a segunda coluna pode ser de texto e a terceira coluna com data. O R possui alguns dataframes que vem automaticamente quando o software é instalado. Estes dataframes são geralmente usados como exemplos nos tutoriais e arquivos de ajuda. Uma dessas bases é o mtcars. Para carregarmos esta base de dados basta digitar: 1 data(mtcars) Após digitar o comando acima em seu console, você terá criado uma variável na memória chamada mtcars contendo os dados em questão. Como exemplo, vamos usar o comando head() para visualizar as colunas deste dataframe e as 6 primeiras linhas: 15 Estrutura de dados 1 2 3 4 5 6 7 8 head(mtcars) Mazda RX4 Mazda RX4 Wag Datsun 710 Hornet 4 Drive Hornet Sportabout Valiant 21.0 21.0 22.8 21.4 18.7 18.1 6 6 4 6 8 6 160 160 108 258 360 225 mpg cyl disp hp drat 110 3.90 2.620 16.46 0 110 3.90 2.875 17.02 0 93 3.85 2.320 18.61 1 110 3.08 3.215 19.44 1 175 3.15 3.440 17.02 0 105 2.76 3.460 20.22 1 1 1 1 0 0 0 wt qsec vs am gear carb 4 4 4 4 4 1 3 1 3 2 3 1 Visualizando apenas as 6 primeiras linhas do dataframe mtcars podemos perceber que este é a estrutura de dados que se assemelha às planilhas eletrônicas como Excel. Assim, podemos entender o dataframe como sequência de observações (linhas) de determinadas variáveis (colunas). Assim como as matrizes, os dataframes também possuem dimensão, e podemos verificar a dimensão através do comando dim(): 1 2 dim(mtcars) [1] 32 11 No script abaixo, seguem outros comandos úteis para serem usados com os dataframes: 1 2 # retorna o nome das colunas do dataframe names(mtcars) 1 2 # retorna um resumo estatístico das colunas do dataframe summary(mtcars) 1 2 # retorna as 6 últimas linhas do dataframe tail(mtcars) No script acima aproveitamos para apresentar a sinalização de comentário. Toda linha no R iniciada com o # não é interpretada pelo console. Assim, o símbolo # é usado para incluirmos comentários em nosso código. Veja que no script, cada linha iniciada pelo sinal # explica o comando seguinte. Podemos acessar qualquer registro dentro do dataframe utilizando a mesma notação de matrizes: 16 Estrutura de dados 1 2 3 4 mtcars[,3] [1] 160.0 160.0 108.0 258.0 360.0 225.0 360.0 146.7 140.8 167.6 167.6 275.8 [13] 275.8 275.8 472.0 460.0 440.0 78.7 75.7 71.1 120.1 318.0 304.0 350.0 [25] 400.0 79.0 120.3 95.1 351.0 145.0 301.0 121.0 1 2 mtcars[3, 5] [1] 3.85 1 2 3 mtcars[1,] 1 2 3 4 5 mtcars[1:3,] Mazda RX4 21 mpg cyl disp hp drat wt qsec vs am gear carb 6 160 110 3.9 2.62 16.46 0 1 4 4 Mazda RX4 21.0 Mazda RX4 Wag 21.0 Datsun 710 22.8 6 6 4 mpg cyl disp hp drat 160 110 3.90 2.620 16.46 160 110 3.90 2.875 17.02 108 93 3.85 2.320 18.61 0 0 1 wt 1 1 1 qsec vs am gear carb 4 4 4 4 4 1 Outro recurso poderoso do R são os filtros. Você pode tanto usar a notação de [ ] ou então a função subset(). Vamos ver alguns exemplos de filtros. No exemplo 1, imagine que queremos separar as linhas que possuem o valor 4 na variável cyl. Podemos usar a função subset() ou a notação [ ]: 1 2 3 4 5 6 7 8 9 10 11 12 13 subset(mtcars, mtcars$cyl == 4) Datsun 710 Merc 240D Merc 230 Fiat 128 Honda Civic Toyota Corolla Toyota Corona Fiat X1-9 Porsche 914-2 Lotus Europa Volvo 142E 22.8 24.4 22.8 32.4 30.4 33.9 21.5 27.3 26.0 30.4 21.4 4 4 4 4 4 4 4 4 4 4 4 108.0 146.7 140.8 78.7 75.7 71.1 120.1 79.0 120.3 95.1 121.0 mpg cyl disp hp drat 93 3.85 2.320 18.61 1 62 3.69 3.190 20.00 1 95 3.92 3.150 22.90 1 66 4.08 2.200 19.47 1 52 4.93 1.615 18.52 1 65 4.22 1.835 19.90 1 97 3.70 2.465 20.01 1 66 4.08 1.935 18.90 1 91 4.43 2.140 16.70 0 113 3.77 1.513 16.90 1 109 4.11 2.780 18.60 1 1 0 0 1 1 1 0 1 1 1 1 wt qsec vs am gear carb 4 1 4 2 4 2 4 1 4 2 4 1 3 1 4 1 5 2 5 2 4 2 17 Estrutura de dados 1 2 3 4 5 6 7 8 9 10 11 12 13 mtcars[mtcars$cyl == 4,] Datsun 710 Merc 240D Merc 230 Fiat 128 Honda Civic Toyota Corolla Toyota Corona Fiat X1-9 Porsche 914-2 Lotus Europa Volvo 142E 22.8 24.4 22.8 32.4 30.4 33.9 21.5 27.3 26.0 30.4 21.4 4 4 4 4 4 4 4 4 4 4 4 108.0 146.7 140.8 78.7 75.7 71.1 120.1 79.0 120.3 95.1 121.0 mpg cyl disp hp drat 93 3.85 2.320 18.61 1 62 3.69 3.190 20.00 1 95 3.92 3.150 22.90 1 66 4.08 2.200 19.47 1 52 4.93 1.615 18.52 1 65 4.22 1.835 19.90 1 97 3.70 2.465 20.01 1 66 4.08 1.935 18.90 1 91 4.43 2.140 16.70 0 113 3.77 1.513 16.90 1 109 4.11 2.780 18.60 1 1 0 0 1 1 1 0 1 1 1 1 wt qsec vs am gear carb 4 1 4 2 4 2 4 1 4 2 4 1 3 1 4 1 5 2 5 2 4 2 Agora, imagine que queremos as variáveis mpg e hp das observações que possuem o valor 4 na variável cyl: 1 2 3 4 5 6 7 8 9 10 11 12 13 subset(mtcars, mtcars$cyl == 4, select = c("mpg", "hp")) 1 2 3 4 5 6 7 8 9 10 mtcars[mtcars$cyl == 4, c(1, 4)] mpg Datsun 710 22.8 93 Merc 240D 24.4 62 Merc 230 22.8 95 Fiat 128 32.4 66 Honda Civic 30.4 52 Toyota Corolla 33.9 65 Toyota Corona 21.5 97 Fiat X1-9 27.3 66 mpg Datsun 710 Merc 240D Merc 230 Fiat 128 Honda Civic Toyota Corolla Toyota Corona Fiat X1-9 Porsche 914-2 Lotus Europa Volvo 142E hp 22.8 93 24.4 62 22.8 95 32.4 66 30.4 52 33.9 65 21.5 97 27.3 66 26.0 91 30.4 113 21.4 109 hp 18 Estrutura de dados 11 12 13 Porsche 914-2 Lotus Europa Volvo 142E 26.0 91 30.4 113 21.4 109 Agora é só usar a imaginação e filtrar os dados como melhor lhe convier! A última estrutura de dados que iremos ver são as listas. Listas funcionam como um varal. Num varal podemos pendurar vários tipos de coisas. Você pode pendurar roupas, quadros, cadeira, fotos e várias outras coisas que você nem imagina. No R, a lista funciona da mesma forma. Você pode incluir numa lista diferentes dados e estruturas. Lembra-se das variáveis a e idade que criamos anteriormente? Pois bem, vamos adicioná-las juntamente com o dataframe mtcars a uma lista chamada dados. 1 dados = list(mtcars, a, idade) Agora, a lista dados possui na sua posição 1 o dataframe mtcars, na sua posição 2 o vetor numérico de um elemento a e na posição 3 o vetor idade. Para recuperar o objeto de uma lista, podemos usar a notação [[ ]]. Veja o exemplo para recuperar o objeto salvo na posição 3: 1 dados[[3]] Ao longo deste capítulo, criamos na memória do nosso computador várias variáveis. Você consegue se lembrar de todas elas? Não se preocupe. Existe uma função que faz isto para você: 1 2 3 ls() [1] "a" [6] "m1" "b" "m2" "dados" "mtcars" "experiencia" "idade" "x" E se não quisermos mais a variável x? Sem problemas, podemos deletar através do comando rm(): 1 rm(x) Se quiser excluir todas as variáveis que você criou na memória, basta usar o comando: 1 rm(list = ls(all=TRUE)) Como este livro é para ensinar os primeiros passos, o que você viu até aqui são as estruturas e tipos de dados mais utilizados. Mas existem outras estruturas que com o passar do tempo, você terá a oportunidade de aprender!