- 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!