Introdução ao - curso-R

Transcrição

Introdução ao - curso-R
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 Universidade 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ínio
pú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, como
no SPSS, SAS e S-Plus?
• Não.
• O R em versão para Windows é até provido de menus, mas todos são
usados para realizar tarefas não estatísticas (como atualizar a versão ou
salvar um gráfico).
• Todas as funções estatísticas que acompanham o R devem ser chamadas
a partir do cursor do programa (seja digitando um comando ou copiando
e colando um comando previamente digitado).
FAQ
O fato do R não possuir menus não seria uma desvantagem em relação
a outros pacotes estatísticos?
• Depende.
• Muitos irão certamente interpretar esse fato como uma desvantagem, mas
que na verdade é uma vantagem forte do R.
• A utilização do R para realizar análises estatísticas exige muito mais do
que simplesmente apertar alguns botões em série e dar alguns cliques no
mouse: para trabalhar dados com o R é preciso PENSAR e ENTENDER
o que se está fazendo.
• Ao contrário de muitos pacotes estatísticos clássicos, o R permite uma
grande 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 poder
criar as suas próprias funções personalizadas (como será mostrado mais
tarde).
2
FAQ
Mas será que ninguém ainda desenvolveu um R com menus?
• Existe uma biblioteca, desenvolvida pelo John Fox, chamada Rcmdr que
possui 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 gastar
mais me mil euros, o que seria necessário para comprar o módulo básico
do 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, como
posso ter certeza que se trata de um produto confiável?
• Esta é uma outra vantagem do R: o Projeto R consiste em uma colaboração
internacional de vários pesquisadores que se comunicam através de uma
eficiente lista de discussão pela Internet.
• Com isso, não só bugs (defeitos de programação) são detectados e corrigidos, como também novos módulos contendo métodos estatísticos recentemente implementados são regularmente disponibilizados e atualizados na
rede.
FAQ
O que são esses módulos adicionais?
• Os módulos adicionais funcionam da seguinte forma: um pesquisador em
algum lugar do mundo precisou desenvolver uma aplicação numa área que
não é coberta nem pelo módulo básico nem pelos módulos de colaboradores
existentes.
3
• O que esse pesquisador faz é desenvolver o que é chamada de uma biblioteca para o R com as funções que ele criou e utilizou, disponibilizando-a
na rede. A vantagem é que a biblioteca pode ser usada por diferentes
pessoas, que irão eventualmente reportar erros nas funções, que podem
então ser atualizadas pelo seu criador.
Como obter o R
Como obter uma cópia do R?
Pela homepage
www.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 seu
disco.
Tutorial para instalação
Passeando pela Homepage do R
www.r-project.org
4
Referências
Referências
Para iniciar, consulte:
• Tutorial em português do Prof Paulo Justiniano (supporting member ) em
formato html ou pdf. (Muito do material desse curso foi baseado em suas
notas 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 R
Iniciar 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éticas
E 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
sqrt()
abs()
exp()
log10()
log()
sin() cos() tan()
asin() acos() atan()
sin() cos() tan()
gamma()
factorial()
choose()
Descrição
raiz quadrada
valor absoluto
exponencial
logaritmo na base 10
Logaritmo na base e
funções trigonométricas
funções trigonométricas inversas
funções trigonométricas
função Gamma de Euler
fatorial (n!)
n!
número de combinações ( 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ênteses
sendo 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 anteriormente através do comando log(8,base=2). O que terá acontecido?
Bem, se não houve queixa do programa quanto ao segundo argumento, ele
deve ter um valor pré-estabelecido.
Sintaxe de uma função
• Tenha cuidado com a ordem dos argumentos quando o seus respectivos
nomes 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ção
Para 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 objecto
Vamos 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 palavra
banana e por fim o número 7, quando copiamos o conteúdo do objeto
banana para x.
• Repare que as substituições de conteúdo do objeto x foram feitas sem
nenhuma cerimônia pelo R.
• Isso pode ser um problema no R: ele não pergunta se você quer ou não
substituir 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 grupo
de coisas), precisamos usar uma função para dizer ao programa que os
valores 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úsculas.
• NaN Not a Number, denota um valor que não é representável por um
número.
• Inf e -Inf mais ou menos infinito.
> c(-1, 0, 1)/0
[1] -Inf NaN Inf
Nomes reservados
O R, como qualquer outra linguagem, possui nomes reservados, isto é, nomes
que não podem ser utilizados para objetos por terem um significado especial na
linguagem. São eles:
FALSE Inf NA NaN NULL TRUE
break else for function if
in next repeat while
2
Como pedir ajuda
Ajuda
Existem várias formas de se pedir ajuda no R.
Help html
A 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 ou
o nome da função, caso saiba. Tente procurar o help da função mean.
10
Ajuda
Conhecendo o nome da função
Se 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 comando
help.search() e pedir ajuda sobre um tópico, que ocorrerá em dois
passos. O primeiro é descobrir as funções que mencionam o tópico em
questão.
> help.search("cox")
• Outra janela dentro do R se abrirá com o resultado da busca, listando o
nome 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 comando
help.search()
Ajuda
Conteúdo do help
As 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 que
pode 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 para
o 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 matrizes diretamente sem a necessidade de loops.
• Nome dos objetos Os nomes para os objectos do Rpodem ser qualquer
combinação de letras, números e símbolos como o (_) e o (.), mas devem
começar com uma letra.
• Os objetos criados no R ficam guardados na memória Podemos gravar
estes 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 teclas
de ↑ 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 à parte
com a função history().
– O número de entradas mostradas, por default, são 25. Para ver todas
pode-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 comandos do R
Filosofia de trabalho no R
• A melhor forma de trabalhar no R é utilizar um editor de texto para
guardar 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 os
comandos basta pressionar <ctrl+r> numa linha ou num bloco de
linhas.
– 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 fazer
um 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 o
shortcut <Ctrl+F4>
13
Filosofia de trabalho no R
• É conveniente criar uma pasta de trabalho (folder /diretório) própria para
cada projeto onde deverão estar todos os arquivos de dados e onde serão
guardados 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.... Escolha
a pasta na qual se encontra os seus dados.
3. Também pode optar em mudar a paste de trabalho através do comando
> 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 sua
análise, no menu File > Save Workspace...
6. Ná próxima vez que quiser continuar a trabalhar no projeto, basta
ir direto ao diretório e fazer um duplo clique no arquivo .RData que
está 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 depois escolha as bibliotecas. Utilize a tecla <CTRL> para escolher mais
que 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 no
R, 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
> x * 2
[1] 20.78 19.28 20.68
6.17 10.19
6.43
9.40 10.64 15.50
7.37
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
Vetores
> length(x)
[1] 10
#tamanho do vetor
> is.vector(x)
[1] TRUE
> is.matrix(x)
[1] FALSE
15
4.17 10.34
9.64 10.39
> is.numeric(x)
[1] TRUE
> is.character(x)
[1] FALSE
Índice de Vetores
Os colchetes (parênteses reto) [] são usados para indicar seleção de elementos 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
> which(x>10)
[1] 1 3 9
Índice de Vetores
Outro exemplo
> y<-which(x>11)
> y
[1] 9
#posição em que x>11
> 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
> x * 2
[1] 2
8 10 12 14 16 18 20
4
6
7
8
9 10 11 12
16
TRUE FALSE
> 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 Vetores
Operaçã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
> class(y)
[1] "logical"
TRUE
TRUE
TRUE
TRUE
TRUE
TRUE
TRUE
TRUE
Tipo de vetores
Uma 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 queremos
armazenar a informação sobre o sexo dos indivíduos.
• Pode-se usar um código numérico como 0 para homens e 1 para mulheres
ou 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 <> c5
[1] "M"
> c5 <> c5
[1] "M"
> f5 <> f5
[1] M F
Levels:
c("M","F","F","F","M","M")
"F" "F" "F" "M" "M"
c("M","F","F","F","M","M")
"F" "F" "F" "M" "M"
factor(c5)
F F M M
F M
Tipo de vetores
Fatores (Factors)
• Note que fatores são mostrados de forma semelhante mas não identica aos
vetores alfanuméricos.
• Os valores dos fatores são impressos sem aspas e os níveis do fator são
também impressos.
• As categorias (níveis) de um fator podem ser vistas usando a função
levels()
> levels(f5)
[1] "F" "M"
Tipo de vetores
Fatores (Factors)
• Os níveis de um fator podem ser facilmente modificados assinalando um
novo vetor alfanumérico aos níveis do fator:
> levels(f5) <- c("Female","Male")
> f5
[1] Male
Female Female Female Male
Levels: Female Male
Male
• Uma das coisas que se pode fazer com um fator é tabular os números em
cada 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 e
colunas (coordenadas)
• Os elementos de uma matriz são sempre do mesmo tipo (ou numérico ou
caracter, 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
Matrizes
Criando 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"
Matrizes
Criando 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
Matrizes
Para 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 matriz
Selecionando...
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 a
raiz 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 matrizes
Multiplicaçã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ê provavelmente 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áveis
e as linhas são os registros.
• Diferentemente dos vetores e matrizes, um data frame pode conter colunas
com 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ício
Agora 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 cinco
registros das 3 últimas variáveis
6. criar um novo objeto chamado dados3 que contenha todos os registros
que tenham age acima da média de age
7. criar um novo objeto chamado dados4 que contenha todos os registros
que 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é mesmo
outras 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 ) com
diferentes tipos de conteúdos (númericos e caracteres) e tamanhos.
25
Lista
• Os componentes da lista são introduzidos usando a forma usual nome=arg
de atribuir argumentos em uma função.
• Cada elemento da lista pode ser acessado individualmente por seu nome
precedido pelo símbolo $, assim como usado no data frame:
> person$name
[1] "Fred"
> person$score[2]
[1] 78
# nome
# segundo elemento de $score
Pode-se ainda acessar cada elemento pelo seu número de ordem na lista
utilizando colchetes duplos:
> person[[1]]
[1] 21
> person[[3]]
[1] 65 78 55
6
Importação de dados
Importação de dados
O 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 abertos
num editor de texto como Crimson. Em geral tem extensão .dat ou .txt.
• Podemos obter os nossos dados em formato texto utilizando a opção
GUARDAR COMO.. nos diversos softwares.
• Como exemplo vamos abrir o arquivo diet.txt num editor de texto para
visualizar 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 objeto
dieta, 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 arquivo
conté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 primeiro
lugar, guardar cada folha de cálculo como arquivo CSV (Comma Separated
Value), que é também um arquivo formato texto.
• Dependendo das configurações regionais do computador, o arquivo do tipo
CSV terá os campos (ou colunas ou variáveis) separados por ponto e vírgula (;) e vírgula (,) como separador decimal.
• Por esta razão, é aconselhável, sempre que possível, abrir o arquivo CSV
num editor de texto como o Crimson.
Arquivos Excel
• Para exercitar, abra o arquivo diet.xls no seu Excel e grave como CSV
com o nome diet.csv, no seu diretório de trabalho.
• Depois de guardado no formato correto, vamos ao prompt do R para importar 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 trabalho do R for igual ao que se encontra o arquivo. Caso contrário terá que
fornecer 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 argumentos
sep= 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 separadas por vírgula e separador decimal igual a ponto. O segundo é utilizado
quando o arquivo CSV separa as variáveis por ponto e vírgula e tem separador decimal igual a vírgula. Essas variações no formato CSV acontece
devido as configurações regionais do seu computador e das versões do Excel e do Windows.
• Qual desses comandos podemos utilizar para ler o arquivo diet.csv, lido
anteriormente com o comando read.table(). Experimente.
Arquivos Excel
• No Windows, há uma forma mais direta de importar dados do Excel, mas
que nem sempre funciona muito bem, a não ser que as folhas de cálculos
nã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 SPSS
Os 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 dados
Podemos exportar dados de vários formatos
• ASCII
• Excel
• SPSS
Arquivos ASCII
Para exportar os dados usamos a função write.table() que grava um arquivo 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 nome
e ainda previne o R de colocar números como nomes (por default o R vai
fazer uma numeração crescente, como se fosse o número do registro, se
esse argumento for TRUE ).
5. quote = FALSE serve para indicar ao R que variáveis tipo caracter devem
ser exportadas sem estar entre aspas (porque se estiverem o SPSS não vai
levar isso em conta e vai importar as aspas junto).
Arquivos Excel
Para exportar os dados diretamente para o Excel é necessário carregar a
biblioteca xlsReadWrite
library(xlsReadWrite)
write.xls(dados, file="dados.xls")
Arquivos SPSS
Para exportar os dados diretamente para o SPSS é necessário carregar a
biblioteca foreign. A função write.foreign guarda dois ficheiros: um com os
dados 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 sintaxe
do 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 elaborar
cada exercício.
• Utilize o símbolo # para introduzir comentários no seu script.
30

Documentos relacionados