introdução ao -...

30
Introdução ao Valeska Andreozzi valeska.andreozzi at fc.ul.pt Centro de Estatística e Aplicações da Universidade de Lisboa, Portugal Lisboa, 2012 Objetivos do curso Apresentar, de forma simples e acessível, as várias funções do R. Programa Sumário 1 Introdução 1 2 Como pedir ajuda 10 3 Filosofia de trabalho no R 12 4 Bibliotecas 14 5 Objetos 15 6 Importação de dados 26 7 Exportação de dados 29 8 Exercício 30 1 Introdução FAQ FAQ O que é o R? O R é um sistema desenvolvido a partir da linguagem S (que também é usada numa versão comercial, o S-Plus), que tem suas origens nos laboratórios da AT&T no final dos anos 80. Em 1995 dois professores de estatística da Univer- sidade de Auckland, na Nova Zelândia, iniciaram o "Projeto R", com o intuito 1

Upload: phungdan

Post on 06-Apr-2018

218 views

Category:

Documents


2 download

TRANSCRIPT

Introdução aoValeska Andreozzi valeska.andreozzi at fc.ul.pt

Centro de Estatística e Aplicações da Universidade de Lisboa, Portugal

Lisboa, 2012

Objetivos do curso

Apresentar, de forma simples e acessível, as várias funções do R.

Programa

Sumário

1 Introdução 1

2 Como pedir ajuda 10

3 Filosofia de trabalho no R 12

4 Bibliotecas 14

5 Objetos 15

6 Importação de dados 26

7 Exportação de dados 29

8 Exercício 30

1 Introdução

FAQ

FAQ

O que é o R?O R é um sistema desenvolvido a partir da linguagem S (que também é usadanuma versão comercial, o S-Plus), que tem suas origens nos laboratórios daAT&T no final dos anos 80. Em 1995 dois professores de estatística da Univer-sidade de Auckland, na Nova Zelândia, iniciaram o "Projeto R", com o intuito

1

de desenvolver um programa estatístico poderoso baseada em S, e de domíniopúblico.

1. Ler e realizar operações sobre os dados

2. Realizar computações

3. Conduzir análises estatísticas e

4. Dispor os resultados

5. Experimentar e implementar novos algoritmos

Um ambiente de programação para análise de dados e construção de gráficos.

FAQ

Com o R posso utilizar menus para fazer análises estatísticas, comono SPSS, SAS e S-Plus?

• Não.

• O R em versão para Windows é até provido de menus, mas todos sãousados para realizar tarefas não estatísticas (como atualizar a versão ousalvar um gráfico).

• Todas as funções estatísticas que acompanham o R devem ser chamadasa partir do cursor do programa (seja digitando um comando ou copiandoe colando um comando previamente digitado).

FAQ

O fato do R não possuir menus não seria uma desvantagem em relaçãoa outros pacotes estatísticos?

• Depende.

• Muitos irão certamente interpretar esse fato como uma desvantagem, masque na verdade é uma vantagem forte do R.

• A utilização do R para realizar análises estatísticas exige muito mais doque simplesmente apertar alguns botões em série e dar alguns cliques nomouse: para trabalhar dados com o R é preciso PENSAR e ENTENDERo que se está fazendo.

• Ao contrário de muitos pacotes estatísticos clássicos, o R permite umagrande flexibilidade em relação às funções estatísticas pré-existentes, i.e.,as funções são "editáveis", além da possibilidade de você mesmo podercriar as suas próprias funções personalizadas (como será mostrado maistarde).

2

FAQ

Mas será que ninguém ainda desenvolveu um R com menus?

• Existe uma biblioteca, desenvolvida pelo John Fox, chamada Rcmdr quepossui menus.

• Para utilizar basta instalá-la e carregar com o comando require(Rcmdr)

e o menu se abrirá automaticamente.

• Atençao: Note que o Rcmdr não provê acesso a toda funcionalidade do R

mas simplesmente a alguns procedimentos estatísticos mais usuais.

• Maiores informações sobre esta biblioteca podem ser encontradas na pá-gina do Rcmdr

FAQ

Quanto custa para ter uma cópia oficial do R?

• Não custa nada: ele é de graça MESMO, ou seja, ninguém precisa gastarmais me mil euros, o que seria necessário para comprar o módulo básicodo SPSS, por exemplo;

• nem ser obrigado a cometer um pequeno delito para usar o R.

FAQ

Se ninguém está ganhando dinheiro para manter o R atualizado, comoposso ter certeza que se trata de um produto confiável?

• Esta é uma outra vantagem do R: o Projeto R consiste em uma colaboraçãointernacional de vários pesquisadores que se comunicam através de umaeficiente lista de discussão pela Internet.

• Com isso, não só bugs (defeitos de programação) são detectados e corrigi-dos, como também novos módulos contendo métodos estatísticos recente-mente implementados são regularmente disponibilizados e atualizados narede.

FAQ

O que são esses módulos adicionais?

• Os módulos adicionais funcionam da seguinte forma: um pesquisador emalgum lugar do mundo precisou desenvolver uma aplicação numa área quenão é coberta nem pelo módulo básico nem pelos módulos de colaboradoresexistentes.

3

• O que esse pesquisador faz é desenvolver o que é chamada de uma biblio-teca para o R com as funções que ele criou e utilizou, disponibilizando-ana rede. A vantagem é que a biblioteca pode ser usada por diferentespessoas, que irão eventualmente reportar erros nas funções, que podementão ser atualizadas pelo seu criador.

Como obter o R

Como obter uma cópia do R?

Pela homepagewww.r-project.org

Passo-a-passo da homepage

1. Selecione, no menu Download, Packages a esquerda da tela, a opção CRAN

(Comprehensive R Archive Network)

2. Selecione o mirror, por exemplo UK

3. Selecione seu sistema operacional Download R for Windows

4. Selecione o subdiretório base

5. Selecione o programa Download R 2.14.2 for Windows e guarde no seudisco.

Tutorial para instalação

Passeando pela Homepage do Rwww.r-project.org

4

Referências

ReferênciasPara iniciar, consulte:

• Tutorial em português do Prof Paulo Justiniano (supporting member) emformato html ou pdf. (Muito do material desse curso foi baseado em suasnotas de aula.)

• Tutorial para instalação

• Bioestatística

• Análise de dados epidemiológicos

• Tutorial da Faculdade de Economia do Universidade do Porto

• Lista completa de manuais, tutoriais em diversas línguas

Operações Básicas

Inicializando o RIniciar uma sessão de R

• Clicar no ícone do R que se encontra no Desktop do seu computador.

Operações aritméticas

> 3+7

[1] 10

> 3-7

[1] -4

> 3*7

[1] 21

5

> 3/7

[1] 0.4285714

> 3^7

[1] 2187

Operações aritméticasE se quisermos calcular o log2 8 = 3?

> log(8,base=2)

[1] 3

E a raiz quadrada de 25?

> sqrt(25)

[1] 5

ou

> 25^(1/2)

[1] 5

Cuidado com a ordem das operações

> 25^1/2

[1] 12.5

Algumas funções

Função Descriçãosqrt() raiz quadradaabs() valor absolutoexp() exponencial

log10() logaritmo na base 10log() Logaritmo na base e

sin() cos() tan() funções trigonométricasasin() acos() atan() funções trigonométricas inversas

sin() cos() tan() funções trigonométricasgamma() função Gamma de Eulerfactorial() fatorial (n!)choose() número de combinações ( n!

x!(n−x)! )

Sintaxe de uma função

• Vamos aproveitar esse exemplo para explicar algumas características bá-sicas das funções disponíveis no R. Todas têm a forma:

6

> função (argumento(s) obrigatório(s), argumento(s) opcional(is))

• Sendo que os argumentos opcionais podem ter um valor padrão (default)pré-estabelecido ou não. Os argumentos estarão sempre entre parêntesessendo separados por vírgula.

• Veja o que acontece quando deixamos o segundo argumento em branco:

> log(8)

[1] 2.079442

• Não houve mensagem de erro, mas o resultado é diferente do obtido an-teriormente através do comando log(8,base=2). O que terá acontecido?Bem, se não houve queixa do programa quanto ao segundo argumento, eledeve ter um valor pré-estabelecido.

Sintaxe de uma função

• Tenha cuidado com a ordem dos argumentos quando o seus respectivosnomes não são mencionados

> log(8,2)

[1] 3

> log(2,8)

[1] 0.3333333

• A ordem não é importante quando o nome do argumento é mencionado

> log(base=2,x=8)

[1] 3

> log(x=8,base=2)

[1] 3

Argumentos de uma funçãoPara listar os argumentos de uma função

> args(log)

function (x, base = exp(1))

NULL

ou através do help

> ?log

7

Argumentos de uma função

Criação de um objeto

Criação de um objectoVamos criar um objeto chamado x

> x <- 3

• <- é o símbolo de atribuição (assignment)

• Para ver o que se encontra num objeto, basta listá-lo

> x

[1] 3

• O R faz diferenciação entre maiúsculas e minúsculas (case sensitive)

> X

Error: object "X" not found

Outro exemplo:

> y <- x*6

> y

[1] 18

Criação de um objecto

• Vamos criar um objeto chamado x com um conteúdo diferente

> x <- "banana"

> x

[1] "banana"

8

• Onde está a diferença?

> x <- banana

Error: Object "banana" not found

Criação de um objecto

• E se o objeto banana existisse?

> banana <- 7

> banana

[1] 7

> x <- banana

> x

[1] 7

• Foi colocado no objeto x primeiramente o número 3, depois a palavrabanana e por fim o número 7, quando copiamos o conteúdo do objetobanana para x.

• Repare que as substituições de conteúdo do objeto x foram feitas semnenhuma cerimônia pelo R.

• Isso pode ser um problema no R: ele não pergunta se você quer ou nãosubstituir o conteúdo de um objeto por outro.

Função c()

• No R, para entrar com vários números (ou nomes, ou qualquer outro grupode coisas), precisamos usar uma função para dizer ao programa que osvalores serão combinados em um único vetor.

> x <- c(1,2,3,4,5)

> x

[1] 1 2 3 4 5

> x <- c("banana", "laranja", "tangerina")

> x

[1] "banana" "laranja" "tangerina"

> banana <- 7

> x<-c(banana,8,9)

> x

[1] 7 8 9

> x<-c(banana,"laranja")

> x

[1] "7" "laranja"

9

Valores faltantes e especiais

• NA Not Available, denota dados faltantes. Note que deve utilizar maiús-culas.

• NaN Not a Number, denota um valor que não é representável por umnúmero.

• Inf e -Inf mais ou menos infinito.

> c(-1, 0, 1)/0

[1] -Inf NaN Inf

Nomes reservadosO R, como qualquer outra linguagem, possui nomes reservados, isto é, nomes

que não podem ser utilizados para objetos por terem um significado especial nalinguagem. São eles:

FALSE Inf NA NaN NULL TRUE

break else for function if

in next repeat while

2 Como pedir ajuda

AjudaExistem várias formas de se pedir ajuda no R.

Help htmlA forma mais fácil é selecionar o menu Help > Html Help. A seguir, o seu

browser da internet abrirá e você deverá selecionar o link Search Engine and

Keywords e só depois poderá fazer sua pesquisa escrevendo a palavra chave ouo nome da função, caso saiba. Tente procurar o help da função mean.

10

Ajuda

Conhecendo o nome da funçãoSe conhecemos o nome da função podemos usar o comando help() no prompt:

> help(mean)

Ou se preferir basta usar o ponto de interrogação antes do nome da função,como mostra o exemplo abaixo

> ?mean

Ajuda

Busca por palavra-chave

• Caso não conheçamos o nome da função podemos utilizar o comandohelp.search() e pedir ajuda sobre um tópico, que ocorrerá em doispassos. O primeiro é descobrir as funções que mencionam o tópico emquestão.

> help.search("cox")

• Outra janela dentro do R se abrirá com o resultado da busca, listando onome da função, o pacote no qual ela se encontra e uma pequena descrição.

• O segundo passo é utilizar o ponto de interrogação para obter informa-ção sobre a função que escolher dentro daqueles listados pelo comandohelp.search()

Ajuda

Conteúdo do helpAs páginas do help html estão, em geral, organizadas da seguinte forma:

1. Nome da função e o pacote ao qual pertence entre parênteses

2. Descrição

3. Sintaxe (usage)

4. Definição dos argumentos

5. Detalhes

6. O que retorna (value)

7. Notas

8. Referencias Bibliográficas

9. Comandos ou objectos relacionados (see also)

10. Exemplos

11

Ajuda

Ajuda especializadoÉ comum alguns autores de bibliotecas disponibilizarem um tutorial em pdf quepode ser aberto direto do R através do comando vignette()

?vignette

vignette(all = TRUE)

vignette("grid")

v1 <- vignette("grid")

print(v1)

edit(v1)

3 Filosofia de trabalho no R

Filosofia de trabalho no R

• Características do R O R é uma linguagem orientada a objeto. Tudo parao R é um objeto e que podem ser de vários tipos. Veremos mais tarde.

O R é uma linguagem vetorial, e portanto capaz de operar vetores e ma-trizes diretamente sem a necessidade de loops.

• Nome dos objetos Os nomes para os objectos do Rpodem ser qualquercombinação de letras, números e símbolos como o (_) e o (.), mas devemcomeçar com uma letra.

• Os objetos criados no R ficam guardados na memória Podemos gravarestes objectos num arquivo com a terminação .RData (por default)

Filosofia de trabalho no R

• Os comandos são guardados num ficheiro .Rhistory

• Os comandos podem ser recuperados e voltados a entrar usado as teclasde ↑ e ↓ ?

• Comandos errados podem ser abandonados com a tecla <Esc>

12

Filosofia de trabalho no R

• Os comandos

– Os comandos já digitados podem ser visualizados numa janela à partecom a função history().

– O número de entradas mostradas, por default, são 25. Para ver todaspode-se introduzir

> history(max.show=Inf)

> # mostra todos os comandos inseridos desde o ínicio da sessão

– O símbolo # serve para introduzir um comentário no arquivo de co-mandos do R

Filosofia de trabalho no R

• A melhor forma de trabalhar no R é utilizar um editor de texto paraguardar seus comandos e já sem erros.

• Uma forma simples é abrir o editor do R.

– Menu File > New scrip

– Vantagem desse editor é que está dentro do R e para executar oscomandos basta pressionar <ctrl+r> numa linha ou num bloco delinhas.

– Salve com extensão .r (Menu File > Save)

• Outros editores de texto alternativos

– Crimson, TINN-R

– Podem-se usar os shortcuts habituais de copy e paste <Ctrl+c>,

<Ctrl+v>

– Ambiente integrado para o R Rstudio

• Conselho: Não utilize o notepad ou Word

Filosofia de trabalho no R

• Se um texto estiver selecionado na área de trabalho do R, pode-se fazerum paste direto do texto selecionando com o shortcut <Ctrl+x>

• Para apagar os comandos e os resultados do ecrã, pode-se usar o shortcut

<Ctrl+L>

• Para fechar janelas (por exemplo, de help ou dos gráficos), pode-se usar oshortcut <Ctrl+F4>

13

Filosofia de trabalho no R

• É conveniente criar uma pasta de trabalho (folder/diretório) própria paracada projeto onde deverão estar todos os arquivos de dados e onde serãoguardados os resultados do R (dados exportados e gráficos)

• Inicie o R na pasta de trabalho.

1. Abra o R

2. Mude a pasta de trabalho no menu File > ChangeDir.... Escolhaa pasta na qual se encontra os seus dados.

3. Também pode optar em mudar a paste de trabalho através do co-mando

> setwd("C:/Projetos/Pasta de Trabalho")

4. E para verificar em que paste estamos trabalhando, utilize

> getwd()

5. Ao fechar o R guarde a seção de trabalho, ou mesmo durante suaanálise, no menu File > Save Workspace...

6. Ná próxima vez que quiser continuar a trabalhar no projeto, bastair direto ao diretório e fazer um duplo clique no arquivo .RData queestá gravado na sua pasta de trabalho

4 Bibliotecas

Como instalar uma biblioteca?

• Lista de bibliotecas http://cran.r-project.org/web/packages/

• No R

1. Selecione no Menu Package a opção Install package(s)... e de-pois escolha as bibliotecas. Utilize a tecla <CTRL> para escolher maisque uma biblioteca.

2. ou através da linha de comando

> install.packages("nome da biblioteca")

3. ou descarregue o arquivo zip da página das bibliotecas e depois noR, selecione no Menu Package a opção Install package(s) from

local zip files....

14

5 Objetos

Objetos

• Objeto é um termo geral para tudo o que têm permanência.

• Tudo o que está do lado direito do símbolo de atribuição (<-) é um objeto.

• Tipos de objetos:

1. vetor (vector)

2. matriz e array (matriz array)

3. data.frame

4. lista (list)

5. função (function)

Vetores

VetoresÉ o tipo de objeto mais comum

> x<-c(10.39,9.64,10.34,4.17,8.19,4.43,7.40,8.64,13.50,5.37)

> x

[1] 10.39 9.64 10.34 4.17 8.19 4.43 7.40 8.64 13.50 5.37

> x + 2

[1] 12.39 11.64 12.34 6.17 10.19 6.43 9.40 10.64 15.50 7.37

> x * 2

[1] 20.78 19.28 20.68 8.34 16.38 8.86 14.80 17.28 27.00 10.74

> sqrt(x)

[1] 3.223352 3.104835 3.215587 2.042058 2.861818 2.104757 2.720294

[8] 2.939388 3.674235 2.317326

> rev(x)

[1] 5.37 13.50 8.64 7.40 4.43 8.19 4.17 10.34 9.64 10.39

Vetores

> length(x) #tamanho do vetor

[1] 10

> is.vector(x)

[1] TRUE

> is.matrix(x)

[1] FALSE

15

> is.numeric(x)

[1] TRUE

> is.character(x)

[1] FALSE

Índice de VetoresOs colchetes (parênteses reto) [] são usados para indicar seleção de elemen-

tos e a função which() retorna as posições do vetor que atendem uma condição.

> x[1]

[1] 10.39

> x[3:4]

[1] 10.34 4.17

> x>10

[1] TRUE FALSE TRUE FALSE FALSE FALSE FALSE FALSE TRUE FALSE

> which(x>10)

[1] 1 3 9

Índice de VetoresOutro exemplo

> y<-which(x>11)

> y #posição em que x>11

[1] 9

> x[y] #valor de x na posição que atende a condição

[1] 13.5

> x[x>13]

[1] 13.5

> x[-length(x)] # todos exceto o ultimo elemento

Operação com Vetores

> x <- 1:10

> x + 2

[1] 3 4 5 6 7 8 9 10 11 12

> x * 2

[1] 2 4 6 8 10 12 14 16 18 20

16

> sqrt(x)

[1] 1.000000 1.414214 1.732051 2.000000 2.236068 2.449490 2.645751

[8] 2.828427 3.000000 3.162278

> x <- 1:10

> rev(x)

[1] 10 9 8 7 6 5 4 3 2 1

Operação com VetoresOperação com dois vetores

> x <- 1:10

> y <- 21:30

> x+y

[1] 22 24 26 28 30 32 34 36 38 40

> x <- 1:10

> y <- c(1,2)

> x+y

[1] 2 4 4 6 6 8 8 10 10 12

> x <- 1:10

> y <- c(1,2,1)

> x + y

[1] 2 4 4 5 7 7 8 10 10 11

Warning message:

In x + y : longer object length is not a multiple of shorter object length

Funções seq e rep

Criar uma sequência e um vetor de valores repetidos

> x5 <- seq(0, 1, len = 11)

> x5

[1] 0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0

> x6 <- rep(1, 5)

> x6

[1] 1 1 1 1 1

> rep(c(1, 2),times=3)

[1] 1 2 1 2 1 2

> rep(c(1, 2),each=3)

[1] 1 1 1 2 2 2

> rep(c(1, 2), times=c(3, 5))

[1] 1 1 1 2 2 2 2 2

17

Tipo de vetores

• numérico (numeric)

• inteiro (integer)

• lógico (logical)

• alfanumérico ou caracter (character)

• fator (factor)

Exemplo:

> x<-1:10

> class(x)

[1] "integer"

> y<-x>2

> y

[1] FALSE FALSE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE

> class(y)

[1] "logical"

Tipo de vetoresUma função particularmente útil para criar vetores de caracteres é paste().

Examine os seguintes comandos.

> paste("aluno", 2)

[1] "aluno 2"

> paste(letters[1:8], 2, sep = "")

[1] "a2" "b2" "c2" "d2" "e2" "f2" "g2" "h2"

> rep(paste("aluno", 1:3, sep = ""), c(4, 4, 3))

[1] "aluno1" "aluno1" "aluno1" "aluno1" "aluno2" "aluno2" "aluno2"

[8] "aluno2" "aluno3" "aluno3" "aluno3"

Tipo de vetores

Fatores (Factors)

• São usados para armazenar dados categóricos.

• Por exemplo, suponha que temos dados de um grupo de pessoas e queremosarmazenar a informação sobre o sexo dos indivíduos.

• Pode-se usar um código numérico como 0 para homens e 1 para mulheresou pode-se usar um código na forma de caracter como ’H’ para homens e’M’ para mulheres. Mas em ambos casos deve-se usar um factor.

18

> c5 <- c("M","F","F","F","M","M")

> c5

[1] "M" "F" "F" "F" "M" "M"

> c5 <- c("M","F","F","F","M","M")

> c5

[1] "M" "F" "F" "F" "M" "M"

> f5 <- factor(c5)

> f5

[1] M F F F M M

Levels: F M

Tipo de vetores

Fatores (Factors)

• Note que fatores são mostrados de forma semelhante mas não identica aosvetores alfanuméricos.

• Os valores dos fatores são impressos sem aspas e os níveis do fator sãotambém impressos.

• As categorias (níveis) de um fator podem ser vistas usando a funçãolevels()

> levels(f5)

[1] "F" "M"

Tipo de vetores

Fatores (Factors)

• Os níveis de um fator podem ser facilmente modificados assinalando umnovo vetor alfanumérico aos níveis do fator:

> levels(f5) <- c("Female","Male")

> f5

[1] Male Female Female Female Male Male

Levels: Female Male

• Uma das coisas que se pode fazer com um fator é tabular os números emcada categoria usando a função table() :

> table(f5)

f5

Female Male

3 3

19

Matrizes

Matrizes

• Matrizes são objetos em que os elementos estão arrumados em linhas ecolunas (coordenadas)

• Os elementos de uma matriz são sempre do mesmo tipo (ou numérico oucaracter, nunca ambos)

Criando uma matriz

> x <- matrix(c(1,2,3,4,5,6,7,8,9,10,11,12), ncol=3)

> x

[,1] [,2] [,3]

[1,] 1 5 9

[2,] 2 6 10

[3,] 3 7 11

[4,] 4 8 12

> is.numeric(x)

[1] TRUE

MatrizesCriando uma matriz

> y<-matrix(letters[1:10],ncol=2)

> y

[,1] [,2]

[1,] "a" "f"

[2,] "b" "g"

[3,] "c" "h"

[4,] "d" "i"

[5,] "e" "j"

> is.character(y)

[1] TRUE

> y<-matrix(letters[1:10],ncol=2,byrow=T)

> y

[,1] [,2]

[1,] "a" "b"

[2,] "c" "d"

[3,] "e" "f"

[4,] "g" "h"

[5,] "i" "j"

MatrizesCriando uma matriz com as funções cbind() e rbind() que juntam (colam)

colunas e linhas, respectivamente

20

> x<-matrix(1:12,ncol=3)

> x

[,1] [,2] [,3]

[1,] 1 5 9

[2,] 2 6 10

[3,] 3 7 11

[4,] 4 8 12

> y <- cbind(x,1:4) # adicionando uma nova coluna..

> y

[,1] [,2] [,3] [,4]

[1,] 1 5 9 1

[2,] 2 6 10 2

[3,] 3 7 11 3

[4,] 4 8 12 4

Matrizes

> y <- rbind(y,c(99,99,99,99)) # adicionando uma nova linha...

> y

[,1] [,2] [,3] [,4]

[1,] 1 5 9 1

[2,] 2 6 10 2

[3,] 3 7 11 3

[4,] 4 8 12 4

[5,] 99 99 99 99

MatrizesPara verificar a dimensão de uma matriz usamos a função dim() :

> x<-matrix(1:13,nrow=4,ncol=3)

Warning message:

In matrix(1:13, nrow = 4, ncol = 3) :

data length [13] is not a sub-multiple or multiple

of the number of rows [4]

> x

[,1] [,2] [,3]

[1,] 1 5 9

[2,] 2 6 10

[3,] 3 7 11

[4,] 4 8 12

> dim(x)

[1] 4 3

Índices de uma matrizSelecionando...

21

• o elemento da segunda linha e terceira coluna

> x[2,3]

[1] 10

• os elementos das três primeiras linhas da segunda coluna

> x[1:3,2]

[1] 5 6 7

• todos os elementos da terceira coluna

> x[,3]

[1] 9 10 11 12

• os elementos da primeira e terceira linha de todas as colunas

> x[c(1,3),]

[,1] [,2] [,3]

[1,] 1 5 9

[2,] 3 7 11

Operação com matrizes

• Multiplicar por constante, somar constante, elevar ao quadrado, tirar araiz quadrada de todos os elementos de uma matriz

x<-matrix(1:12,ncol=3)

x

x*2

x^2

x+2

sqrt(x)

Operação com matrizes

• Operações com duas matrizes (operações feitas elemento a elemento)

> y<-matrix(c(1,2,3),nrow=4,ncol=3,byrow=T)

> y

[,1] [,2] [,3]

[1,] 1 2 3

[2,] 1 2 3

[3,] 1 2 3

[4,] 1 2 3

> x+y

[,1] [,2] [,3]

[1,] 2 7 12

[2,] 3 8 13

[3,] 4 9 14

22

[4,] 5 10 15

> x*y

[,1] [,2] [,3]

[1,] 1 10 27

[2,] 2 12 30

[3,] 3 14 33

[4,] 4 16 36

Operação com matrizesMultiplicação matricial

> x

[,1] [,2] [,3]

[1,] 1 5 9

[2,] 2 6 10

[3,] 3 7 11

[4,] 4 8 12

> dim(x)

[1] 4 3

> z<-matrix(c(1,2),nrow=3,ncol=2,byrow=T)

> z

[,1] [,2]

[1,] 1 2

[2,] 1 2

[3,] 1 2

> dim(z)

[1] 3 2

> x%*%z

[,1] [,2]

[1,] 15 30

[2,] 18 36

[3,] 21 42

[4,] 24 48

Data frames

Data frames

• data frames são objetos equivalentes a um banco de dados que você pro-vavelmente já viu em outros formatos (e.g. SPSS, dbf, Excel, Access,Epinfo)

• ou seja, trata-se de uma tabela de dados onde as colunas são as variáveise as linhas são os registros.

• Diferentemente dos vetores e matrizes, um data frame pode conter colunascom dados de diferentes tipos (numérico, caracter, etc)

23

Data frames

Vejamos um exemplo do R (estudo caso controle de câncer endometrial)

library(Epi) #carregando uma biblioteca

data() #lista dos banco de dados disponíveis para serem carregados

?bdendo #help do banco de dados bdendo

data(bdendo) #carrega os dados para a memória do R

names(bdendo) #nome das variáveis (colunas)

dim(bdendo) # dimensão do banco de dados (#linhas,#colunas)

head(bdendo) # lista as 6 primeiras linhas

View(bdendo) #abre o banco dentro do R

Índices de um data frame

• Os índices funcionam igualmente aos da matriz

• Mas com uma vantagem: podemos usar o nome das variáveis

Vejamos alguns exemplos

#criar um data frame com as 10 primeiras linhas de bdendo

dados<-bdendo[1:10,]

#listar o banco

dados

#listar a primeira linha da variável hyp

dados[1,4]

#listar todos os registros da variável agegrp

dados[,12]

#listar todas as variáveis do segundo registro

dados[2,]

Índices de um data frame

Mais exemplos utilizando o nome das variáveis

#listar todos os registros da variável hyp

dados$hyp

#listar os 3 primeiros registros da variável set e age3

dados[1:3,c("set","age3")]

24

Índices de um data frame: exercícioAgora vocês, utilizando o data frame dados, faça:

1. listar a variavel duration

2. quantos registros possuem o banco de dados?

3. listar os três primeiro registros

4. listar o último registro

5. criar um novo objeto chamado dados2 que contenha os últimos cincoregistros das 3 últimas variáveis

6. criar um novo objeto chamado dados3 que contenha todos os registrosque tenham age acima da média de age

7. criar um novo objeto chamado dados4 que contenha todos os registrosque tenham duration abaixo da mediana de duration

Lista

Lista

• As listas são usadas para combinar diferentes objetos em um único objeto.

• Podemos juntar vetores, matrizes, números e/ou caracteres e até mesmooutras listas um único objeto lista.

• Os objetos do tipo lista são mais utilizados como resultados de função.

• As listas são construídas com a função list().

Aqui vai um exemplo simples:

> person <- list(age=21,name="Fred",score=c(65,78,55))

> person

$age:

[1] 21

$name:

[1] "Fred"

$score:

[1] 65 78 55

O objeto person contém três outros objetos vetores (age, name, score) comdiferentes tipos de conteúdos (númericos e caracteres) e tamanhos.

25

Lista

• Os componentes da lista são introduzidos usando a forma usual nome=argde atribuir argumentos em uma função.

• Cada elemento da lista pode ser acessado individualmente por seu nomeprecedido pelo símbolo $, assim como usado no data frame:

> person$name # nome

[1] "Fred"

> person$score[2] # segundo elemento de $score

[1] 78

Pode-se ainda acessar cada elemento pelo seu número de ordem na listautilizando colchetes duplos:

> person[[1]]

[1] 21

> person[[3]]

[1] 65 78 55

6 Importação de dados

Importação de dadosO R lê ou importa dados com os seguintes formatos:

• ASCII

• Excel

• SPSS

• SAS

• Stata

Arquivos ASCII

Arquivos texto

• O formato ASCII são arquivos em formato texto e que podem ser abertosnum editor de texto como Crimson. Em geral tem extensão .dat ou .txt.

• Podemos obter os nossos dados em formato texto utilizando a opçãoGUARDAR COMO.. nos diversos softwares.

• Como exemplo vamos abrir o arquivo diet.txt num editor de texto paravisualizar a sua estrutura.

• Para ler no R os dados no formato texto usamos o comando read.table()

dieta<-read.table("diet.txt",header=TRUE)

dieta

26

Arquivos texto

dieta<-read.table("diet.txt",header=TRUE)

dieta

• A informação que se encontra no arquivo diet.txt foi atribuída ao objetodieta, ie, para o R, os nossos dados estão numa tabela que se chama dieta.

• O argumento header=TRUE especifica que a primeira linha do arquivocontém o nome das variáveis.

• Para maiores informações faça uma busca no help sobre o comando read.table()e veja outros exemplos.

Arquivos Excel (.xls)

Arquivos Excel

• Para que possamos ler um arquivo do Excel no R, temos que, em primeirolugar, guardar cada folha de cálculo como arquivo CSV (Comma SeparatedValue), que é também um arquivo formato texto.

• Dependendo das configurações regionais do computador, o arquivo do tipoCSV terá os campos (ou colunas ou variáveis) separados por ponto e vír-gula (;) e vírgula (,) como separador decimal.

• Por esta razão, é aconselhável, sempre que possível, abrir o arquivo CSVnum editor de texto como o Crimson.

Arquivos Excel

• Para exercitar, abra o arquivo diet.xls no seu Excel e grave como CSVcom o nome diet.csv, no seu diretório de trabalho.

• Depois de guardado no formato correto, vamos ao prompt do R para im-portar o arquivo.

dieta2<-read.table("diet.csv",header=T,sep=";",dec=",")

dieta2

• Não se esqueça que o comando acima só funcionará se o diretório de tra-balho do R for igual ao que se encontra o arquivo. Caso contrário terá quefornecer o caminho completo onde o arquivo se encontra, assim:

dieta2<-read.table("c:/cursoR/diet.csv",header=T,sep=";",dec=",")

dieta2

• Abra o help do comando read.table() e veja a descrição dos argumentossep= e dec=.

27

Arquivos Excel

• Outra forma de ler arquivos do tipo CSV, é através dos comandos

> read.csv1("nome-do-arquivo.csv")

> read.csv2("nome-do-arquivo.csv")

• O primeiro comando é usado caso o arquivo CSV tenha as variáveis sepa-radas por vírgula e separador decimal igual a ponto. O segundo é utilizadoquando o arquivo CSV separa as variáveis por ponto e vírgula e tem sepa-rador decimal igual a vírgula. Essas variações no formato CSV acontecedevido as configurações regionais do seu computador e das versões do Ex-cel e do Windows.

• Qual desses comandos podemos utilizar para ler o arquivo diet.csv, lidoanteriormente com o comando read.table(). Experimente.

Arquivos Excel

• No Windows, há uma forma mais direta de importar dados do Excel, masque nem sempre funciona muito bem, a não ser que as folhas de cálculosnão tenham uma formatação complexa.

• Neste caso é necessário utilizar a biblioteca RODBC

• A primeira linha de cada folha de cálculo deverá conter o nome das variá-veis

library(RODBC)

channel <- odbcConnectExcel("USA.xls")

sqlTables(channel)

usa1 <- sqlFetch(channel, sqtable="folha1")

usa2 <- sqlFetch(channel, sqtable="folha2")

odbcClose(channel)

View(usa1)

View(usa2)

Arquivo SPSSOs arquivos do SPSS podem ser lidos diretamente através do comando

read.spss() da biblioteca foreign

> library(foreign)

> dados.spss<-read.spss("demo.sav",to.data.frame=T)

> View(dados.spss)

28

7 Exportação de dados

Exportação de dadosPodemos exportar dados de vários formatos

• ASCII

• Excel

• SPSS

Arquivos ASCIIPara exportar os dados usamos a função write.table() que grava um ar-

quivo texto e que pode ser lido na maioria dos outros softwares

> write.table(dados,file="arquivo.dat",sep="\t",row.names=F,quote=FALSE)

1. o primeiro argumento é o nome do objeto do R a ser exportado,

2. file= nome do arquivo onde o dado será armazenado

3. sep= tipo de delimitador a ser usado

4. row.names=F serve para indicar que as linhas desse objeto não têm nomee ainda previne o R de colocar números como nomes (por default o R vaifazer uma numeração crescente, como se fosse o número do registro, seesse argumento for TRUE).

5. quote = FALSE serve para indicar ao R que variáveis tipo caracter devemser exportadas sem estar entre aspas (porque se estiverem o SPSS não vailevar isso em conta e vai importar as aspas junto).

Arquivos ExcelPara exportar os dados diretamente para o Excel é necessário carregar a

biblioteca xlsReadWrite

library(xlsReadWrite)

write.xls(dados, file="dados.xls")

Arquivos SPSSPara exportar os dados diretamente para o SPSS é necessário carregar a

biblioteca foreign. A função write.foreign guarda dois ficheiros: um com osdados e outro com o código/sintaxe do SPSS para ser executado.

library(foreign)

data(iris)

iris

write.foreign(iris, datafile="iris.txt",

codefile="iris.sps", package="SPSS")

O arquivo iris.txt contem os dados. O arquivo iris.sps contém a sintaxedo SPSS para ler os dados que estão no arquivo iris.txt.

29

8 Exercício

Exercício

Resolva os exercícios 1, 3 e 5 que encontram-se na página http://www.leg.ufpr.br/~paulojus/embrapa/Rembrapa/Rembrapase5.html#x7-310005.8

• Crie um script (aula1.r) com os comandos do R necessários para elaborarcada exercício.

• Utilize o símbolo # para introduzir comentários no seu script.

30