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