48
RECURSO COMPUTACIONAL PARA ESTAT ´ ISTICA Uma breve introdu¸c˜ ao ao R B´ asico com RStudio Prof. Edson Antonio Alves da Silva Universidade Estadual do Oeste do Paran´a 15 de julho de 2011 Sum´ ario 1 INTRODU ¸ C ˜ AO 2 1.1 Funcionalidades ........................................ 2 1.2 Palavras Reservadas ..................................... 3 1.3 Objetos da workspace .................................... 4 1.4 Identifica¸ ao do tipo de Objeto ............................... 4 1.5 Entrada de dados na workspace ............................... 5 2 ARITM ´ ETICA E L ´ OGICA 6 2.1 Operadores aritm´ eticos .................................... 6 2.2 Operadores l´ ogicos ...................................... 6 2.3 Arredondamento(aproxima¸c˜ oes) de n´ umeros ....................... 6 3 VETORES 9 3.1 Indexa¸ ao, exclus˜ ao e substitui¸c˜ ao de elementos do vetor ................. 9 3.2 Ordena¸c˜ ao de elementos de um vetor ............................ 12 3.3 Inspecionando (pesquisando) elementos de um vetor ................... 13 3.4 Opera¸ oes aritm´ eticas com vetores ............................. 15 3.5 Vetor de sequˆ encias ...................................... 16 3.6 Vetores alfa-num´ ericos .................................... 18 3.7 Lei da Reciclagem ...................................... 18 3.8 Aplicandofun¸c˜ oes a vetores ................................. 20 3.9 Tipos especiais de vetores .................................. 21 3.10 Opera¸ oes l´ ogicas em um vetor ............................... 22 1

Da Silva_Apostila_Uma breve introducao ao R Básico com RStudio

Embed Size (px)

Citation preview

Page 1: Da Silva_Apostila_Uma breve introducao ao R Básico com RStudio

RECURSO COMPUTACIONAL PARA ESTATISTICAUma breve introducao ao R Basico com RStudio

Prof. Edson Antonio Alves da SilvaUniversidade Estadual do Oeste do Parana

15 de julho de 2011

Sumario

1 INTRODUCAO 2

1.1 Funcionalidades . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2

1.2 Palavras Reservadas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

1.3 Objetos da workspace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4

1.4 Identificacao do tipo de Objeto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4

1.5 Entrada de dados na workspace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

2 ARITMETICA E LOGICA 6

2.1 Operadores aritmeticos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

2.2 Operadores logicos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

2.3 Arredondamento (aproximacoes) de numeros . . . . . . . . . . . . . . . . . . . . . . . 6

3 VETORES 9

3.1 Indexacao, exclusao e substituicao de elementos do vetor . . . . . . . . . . . . . . . . . 9

3.2 Ordenacao de elementos de um vetor . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

3.3 Inspecionando (pesquisando) elementos de um vetor . . . . . . . . . . . . . . . . . . . 13

3.4 Operacoes aritmeticas com vetores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

3.5 Vetor de sequencias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16

3.6 Vetores alfa-numericos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18

3.7 Lei da Reciclagem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18

3.8 Aplicando funcoes a vetores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20

3.9 Tipos especiais de vetores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

3.10 Operacoes logicas em um vetor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22

1

Page 2: Da Silva_Apostila_Uma breve introducao ao R Básico com RStudio

4 FATORES 23

5 MATRIZES 26

5.1 Nomeando linhas e colunas da matriz . . . . . . . . . . . . . . . . . . . . . . . . . . . 27

5.2 Inspecionando uma matriz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28

5.3 Operacoes basicas com matrizes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28

5.4 Aplicando funcoes a matrizes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30

5.5 Matrizes multidimensionais (array) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31

6 TABELAS (data.frame) 33

6.1 Abrindo as colunas de uma tabela . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36

6.2 Aplicando uma funcao a uma tabela (sapply) . . . . . . . . . . . . . . . . . . . . . . . 38

7 LISTAS 39

8 FUNDAMENTOS DE BANCO DE DADOS 40

8.1 Instrumento de coleta de dados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40

8.2 Codificacao dos itens do questionario . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41

8.3 Codificacao das variaveis (campos) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42

8.4 Tabela com dados simulados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43

2

Page 3: Da Silva_Apostila_Uma breve introducao ao R Básico com RStudio

1 INTRODUCAO

O R e uma linguagem de programacao que permite manipular dados, fazer calculos e graficos es-tatısticos, dentre outras coisas. O programa esta disponıvel gratuitamente e livremente em http:

//www.r-project.org/. Uma ativa lista de discussao para troca de informacoes, perguntas e res-postas sobre o uso da linguagem R (eh necessario se cadastrar no grupo) pode ser vista em www.

leg.ufpr.br/doku.php/software:rbr. Referencias e/ou apostilas (portugues e ingles) podem serobtidas em: http://cran.r-project.org/doc/contrib/. Material adicional esta disponıvel emhttp://sites.google.com/site/marcosfs2006/material_r.

O R abre em uma janela denominada Workspace (area de trabalho) semelhante a Figura 2. As acoesali executadas ficam armazenadas na memoria volatil (RAM) do computador enquanto ele estiver emfuncionamento, podendo ser salvo juntamente com o programa ao encerra-lo ou em arquivo externoespecıfico.

Figura 1: Tela principal (workspace) do R sob o sistema OS X da Apple

Para uma padronizacao de interface nos diferentes ambientes dos sistemas operacionais OS X do Ma-cintosh, Ubuntu/GNU-Linux e Windows, recomendo o R Studio como um programa gestor do R. Eleesta disponıvel gratuitamente e livremente em http://www.rstudio.org/. Seu conceito fundamentalconsiste em dividir a tela se seu computador em 4 partes: uma contendo um editor de texto (parao desenvolvimento de um script, outro contendo console do R com possibilidade de interacao com ousuario, outra contendo as informacoes da workspace e outra para saıdas e administracao dos recursosdo computador.

1.1 Funcionalidades

• Ha uma distincao generalizada entre minusculas e MAIUSCULAS. Desta forma, uma variaveldenominada “Sexo” e diferente de outra, denominado “sexo”.

• Um historico dos comandos digitados durante uma sessao pode ser recuperado pressionando-sea tecla da seta para cima ou para baixo. Isso e muito util para se verificar comandos digitadosanteriormente ou reedita-los como novo comando.

• Comandos colocados entre parenteses mostram o seu resultado na tela. Por exemplo, o comando(C=A+B) atribui a variavel C o resultado da soma da variavel A com a variavel B e mostra oresultado da operacao.

3

Page 4: Da Silva_Apostila_Uma breve introducao ao R Básico com RStudio

Figura 2: Tela principal RStudio

• O R usa um ponto (.) como separador decimal padrao. Ou seja, um valor decimal deve serexpresso como, por exemplo 1.86 e nao 1,86. Ao se importar dados de arquivos externos queusam virgulas como separadores decimais, lembre-se de troca-las por pontos (.), usando comandosde localizar e substituir diretamente no arquivo fonte ou nos parametros de conversao no processode leitura do arquivo.

• O R oferece os seguintes comandos de ajuda:

(a) help.start(): inicia documentacao na forma de arquivos html visualizados no seu browser(em Ingles).

(b) help(topico) ou ?(topico): inicia uma janela de ajuda sobre um particular topico.

(c) Para sair com seguranca do R (encerrar) use o comando q(). O dialogo

Save workspace image?[y/n/c]

aparecera perguntando se voce quer “salvar” o espaco de trabalho. Usualmente se utilizaresponder n (nao).

1.2 Palavras Reservadas

Segundo a enciclopedia Wikipedia1, em programacao de computadore uma palavra reservada e umapalavra que nao pode ser utilizada como um identificador de uma variavel por ser reservada para usoda gramatica da linguagem. Por exemplo, na linguagem de programacao R, nao se pode utilizar umavariavel com o nome for pois ela e reservada para construcao de loops ou lacos. Esta e uma “palavrachave”, e por ser de uso restrito e espacıfico, e tambem uma “palavra reservada”.

As principais palavras reservadas sao:

NA (represental valores faltantes)

NaN (representa um valor nao representavel por numero)

Inf (representa um valor indeterminado)

c q s t C D F I T diff exp log mean pi range rank var

FALSE Inf NA NaN NULL TRUE break else for function

if in next repeat while

1pt.wikipedia.org

4

Page 5: Da Silva_Apostila_Uma breve introducao ao R Básico com RStudio

1.3 Objetos da workspace

Um objeto presente na workspace e um elemento ali presente que apresenta certas propriedades queo definem em uma classe ou grupo. Um objeto pode ser um carcater, um numero, uma variavel, umafuncao, uma tabela etc. Pode-se designar valores aos objetos utilizando a combinacao do sinal demenor com hıfem (< −), do sinal de maior com hıfem (− >) ou o sinal (=). Por exemplo:

A < − 2 A variavel A recebe o valor 23 − > B A variavel B recebe o valor 3C = A + B A variavel C e igual a soma de variavel A com a variavel B

Ao se utilizar a workspace para varias operacoes com objetos, e natural que tenhamos a necessidadede certo manejo. Os principais comandos sao:

objects() : mostra os objetos atualmente presentes na WSrm() : remove um objeto da WSrm(list = ls()) : remove (sem confirmacao) todos os objetos da WS

Os principais tipos de objetos sao:

• vetores;

• fatores;

• matrizes e arrays;

• listas

• data-frames (tabelas)

• funcoes

1.4 Identificacao do tipo de Objeto

E possıvel identificar o tipo de um objeto com varios comandos, os principais sao: str, class e is

a) Comando str

> str(1:3)

int [1:3] 1 2 3

> str(c("PR", "PR", "SC", "RS"))

chr [1:4] "PR" "PR" "SC" "RS"

> str(factor(c("PR", "PR", "SC", "RS")))

Factor w/ 3 levels "PR","RS","SC": 1 1 3 2

b) Comando class

> class(0:10)

[1] "integer"

5

Page 6: Da Silva_Apostila_Uma breve introducao ao R Básico com RStudio

> class(matrix(1:6, nc = 3))

[1] "matrix"

> class(data.frame(X = 1:10, Y = 21:30))

[1] "data.frame"

> class(list(c("a", "b", "c")))

[1] "list"

c) Comando is

> is.vector(1:10)

[1] TRUE

> is.matrix(matrix(1:6, nc = 3))

[1] TRUE

> is.numeric(matrix(1:6, nc = 3))

[1] TRUE

> is.numeric(0:10)

[1] TRUE

> is.character(matrix(1:6, nc = 3))

[1] FALSE

1.5 Entrada de dados na workspace

c(x1, x2, · · · , xn) : concatena (junta) os dados (x1, x2, · · · , xn) em um ob-jeto do tipo vetor.

read.csv2(arquivo) : le arquivo CSV (Comma-Separated Values) 2 para umobjeto do tipo tabela, na Workspace.

read.table(arquivo) : le tabela de um arquivo texto externo (semelhante aoread.csv2).

6

Page 7: Da Silva_Apostila_Uma breve introducao ao R Básico com RStudio

2 ARITMETICA E LOGICA

A aritmetica, segundo a enciclopedia Wikipedia1, e o ramo da matematica que lida com numerose com as operacoes possıveis entre eles. As operacoes aritmeticas tradicionais sao a adicao, a sub-tracao, a multiplicacao e a divisao, embora operacoes mais avancadas (tais como as manipulacoes deporcentagens, raiz quadrada, exponenciacao e funcoes logarıtmicas) tambem sejam por vezes incluıdasneste ramo. A aritmetica desenrola-se em obediencia a uma ordem de operacoes. Abrange o estudo dealgoritmos (passos) para a realizacao de operacoes com os numeros naturais, inteiros, racionais e reaisque podem ser realizadas manualmente ou com o uso de ferramentas como calculadoras, computadorese abaco.

A logica matematica consiste no estudo matematico da logica e na aplicacao deste estudo a outrasareas da matematica. A logica matematica guarda estritas conexoes com a ciencia da computacao. Foitambem chamada de logica simbolica. Inclui a logica classica (de Aristoteles), mas com uma notacaodiferente, mais abstrata, tomada da algebra. Tradicionalmente dividida em Teoria dos Conjuntos,Teoria dos Modelos, Teoria da Prova e Teoria da Recursao, inclui as partes da logica que podem sermodeladas e estudadas matematicamente. Os principais operadores utilizados sao E, OU e NAO esuas combinacoes

2.1 Operadores aritmeticos

+ − ∗ \ } : soma, subtracao, produto e divisao%/% %% : parte inteira da divisao, parte fracionaria da divisao%*% : produto interno de vetores (ou matrizes)sqrt( ) : raiz quadradaabs( ) : valor absoluto (positivo)sin( ) cos( ) tan( ) : funcoes trigonometricasasin( ) acos( ) atan( ) : funcoes trigonometricas inversassinh( ) cosh( ) tanh( ) : funcoes hiperbolicasasinh( ) acosh( ) atanh( ) : funcoes hiperbolicas inversasexp( ) log( ) : exponencial e logarıtmo naturallog10( ) : logarıtimo base-10

2.2 Operadores logicos

< : menor do que<= : menor ou igual> : maior do que>= : maior ou igual a== : igual a! = : nao igual a (diferente de)

c1&c2 : intersecao (E) - Elementos de c1 e c2c1|c2 : uniao (OU) - Elementos de c1 ou c2!c1 : negacao de c1

Sendo c1 e c2 expressoes logicas.

2.3 Arredondamento (aproximacoes) de numeros

(i) round(x,digits=0) : Arredonda o numero x com o numero de casas decimais definidas por digits.

7

Page 8: Da Silva_Apostila_Uma breve introducao ao R Básico com RStudio

x : e um vetor de numeros.digits : um numero inteiro indicando um numero de casas decimais

apos o arredondamento.

Exemplo: Consideremos o numero 1,901945 arredondado para 4, 3 e 2 casas decimais.

> round(1.901945, digits = 4)

[1] 1.9019

> round(1.901945, digits = 3)

[1] 1.902

> round(1.901945, digits = 2)

[1] 1.9

Figura 3: Posicao de numeros em relacao ao floor e ceiling

(ii) floor(x) : Extrai o maior numero inteiro abaixo (menor) do numero x.

Exemplo:

> floor(0.9556)

[1] 0

> floor(-2.5278)

[1] -3

> floor(2.5278)

[1] 2

(iii) ceiling(x) : Extrai o menor numero inteiro acima (maior) do numero x.

> ceiling(0.9556)

[1] 1

> ceiling(-2.5278)

[1] -2

> ceiling(2.5278)

[1] 3

(iv) trunc(x) : Extrai a parte inteira do numero (sem arredondamento).

Exemplo

8

Page 9: Da Silva_Apostila_Uma breve introducao ao R Básico com RStudio

> trunc(0.9897)

[1] 0

> trunc(2.0103)

[1] 2

> trunc(-5.5)

[1] -5

(v) format(x, digits= ,nsmall= )

9

Page 10: Da Silva_Apostila_Uma breve introducao ao R Básico com RStudio

3 VETORES

Um vetor e uma sequencia numerica finita de valores (inteiros, reais, complexo) que tem em comumum nome para referencias. O numero de elementos da sequencia e chamada de dimensao deste vetor.No ambiente do R, todo numero isolado e definido como um vetor que contem somente um elemento.E um conceito diferente de vetor unitario e de modulo pois o valor em questao ira conservar todasdas propriedades dos conceitos definidos pela algebra linear. Um vetor e formado na workspace, pelaconcatenacao de seus valores. O comando utilizado para isso e c(x1, x2, · · · , xn) onde (x1, x2, · · · , xn)e a seguencia de seus elementos. Como exemplo, formaremos o vetor chamado idade cotendo as idadesde 10 indivduos tomados ao acaso. Sejam elas 21, 19, 28, 21, 23, 18, 34, 32, 18 e 21.

21 2119 28 21 23 18 34 32 18

Figura 4: Vetor com idades em suas posicoes

> idade <- c(21, 19, 28, 21, 23, 18, 34, 32, 18, 21)

Assim, o objeto idade contem o valor 21 na primeira posicao, o valor 19 na segunda, o valor 28 naterceira e assim por diante.

Diremos que um vetor e uma estrutura atomica quando seus elementos forem todos do mesmo tipo.Se os elementos nao forem do mesmo tipo diremos que o objeto se trata de uma lista. Segundo o tipoos elementos de um vetor podem ser:

• inteiros

• numericos reais,

• numericos complexo,

• logico,

• carateres.

Para mais detalhes sobre vetores, consultar as seguintes paginas:

a) Vetores gerais: http://www.leg.ufpr.br/Rtutorial/vectors.html

b) Aritmetica de vetores: http://www.leg.ufpr.br/Rtutorial/vecarit.html

c) vetor de caracteres e fatores: http://www.leg.ufpr.br/Rtutorial/charfacs.html

d) Vetores logicos: http://www.leg.ufpr.br/Rtutorial/logicals.html

e) Vetor de ındices: http://www.leg.ufpr.br/Rtutorial/subscrip.html

3.1 Indexacao, exclusao e substituicao de elementos do vetor

Localizacao: Podemos nos referir ao valor em cada posicao do vetor por um indicador numerico entrecolchetes, ao lado do objeto, espeficicando a posicao desejada. Por exemplo, o valor na sexta posicaoe obtido na forma:

> idade[6]

10

Page 11: Da Silva_Apostila_Uma breve introducao ao R Básico com RStudio

[1] 18

Exclusao: Para excluir o valor de uma determinada posicao de um vetor (um elemento), bastaacrescentar o sinal de menos (−) antes do numero indicador de sua posicao. Entretanto, a exclusaoso se faz na apresentacao na tela; o vetor continua tendo os mesmos elementos originais. A operacaosignifica algo como: “mostre todos os elementos do vetor, exceto o elemento da posicao p”.

> (idade[-6])

[1] 21 19 28 21 23 34 32 18 21

Uma exclusao definitiva pode ser obtida sobrescrevendo-se ou gerando-se um novo vetor o vetor como elemento excluido:

> (idade.e = idade[-6])

[1] 21 19 28 21 23 34 32 18 21

Substituicao: Para substituir o valor de uma determinada posicao de um vetor (um elemento), bastaatribuir localizaca o novo valor. Entretanto, a substituicao nao acontece so na apresentacao na tela; ovetor fica alterado “definitivamente”.

> idade

[1] 21 19 28 21 23 18 34 32 18 21

> idade[6] <- 55

> idade

[1] 21 19 28 21 23 55 34 32 18 21

Inclusao: Pode ser incluıdo um ou mais elementos em um vetor:

a) Incluindo elementos no inıcio do vetor: basta sobrescrever o vetor concatenando os elementosdesejados no inıcio:

> (idade = c(26, 67, 45, 56, idade))

[1] 26 67 45 56 21 19 28 21 23 55 34 32 18 21

b) Incluindo elementos no final do vetor: basta sobrescrever o vetor concatenando os elementos dese-jados no final:

> (idade = c(idade, 23, 45, 45, 19, 32))

[1] 26 67 45 56 21 19 28 21 23 55 34 32 18 21 23 45 45 19 32

c) Incluindo elementos no meio do vetor: escreva o conjunto de elementos desejado concatenando comos elementos a serem inseridos. Seja o vetor com 8 elementos contendo os valores 21, 20, 18, 15,17, 19, 23 e 18 e desejemos inserir o valor 28 na 5a posicao. Concatenamos entao os 4 primeiroselementos do vetor com o 28 e os elementos da 5a ate a 8a posicao do vetor original:

11

Page 12: Da Silva_Apostila_Uma breve introducao ao R Básico com RStudio

> idade = c(21, 20, 18, 15, 17, 19, 23, 18)

> (idade = c(idade[1:4], 28, idade[5:8]))

[1] 21 20 18 15 28 17 19 23 18

Extracao: Formacao de um novo vetor a partir de um subconjunto de um vetor de referencia, a partirde um criterio.

Exemplo: Extrair de um vetor de 20 ındices aqueles elementos que sejam maiores do que 0,4 (40%)

> set.seed(1956)

> (taxa = sample((0:99)/100, 20))

[1] 0.04 0.13 0.48 0.11 0.36 0.16 0.44 0.53 0.39 0.30 0.99 0.46 0.01 0.21 0.89

[16] 0.59 0.90 0.50 0.77 0.68

> (taxa = taxa[taxa > 0.4])

[1] 0.48 0.44 0.53 0.99 0.46 0.89 0.59 0.90 0.50 0.77 0.68

Exemplos:

a) Extrair os dois ultimos valores de idades codificadas A043 A074 A022 A060 A037 A029 A043 A077A020 A050 A086.

> ANO = c("A043", "A074", "A022", "A060", "A037", "A029", "A043",

+ "A077", "A020", "A050", "A086")

> as.numeric(substr(ANO, 3, 4))

[1] 43 74 22 60 37 29 43 77 20 50 86

b) Extrair o numeral da decada dos 10 anos obtidos de uma amostra de anos entre os anos 1900 e1999.

> set.seed(56)

> (ANO = sample(1900:1999, 10, rep = TRUE))

[1] 1940 1972 1930 1973 1934 1910 1921 1916 1970 1951

> (ANO = ANO/100)

[1] 19.40 19.72 19.30 19.73 19.34 19.10 19.21 19.16 19.70 19.51

> (ANO = ANO - trunc(ANO))

[1] 0.40 0.72 0.30 0.73 0.34 0.10 0.21 0.16 0.70 0.51

> (ANO = 100 * ANO)

[1] 40 72 30 73 34 10 21 16 70 51

EXERCICIO: No vetor com 8 elementos contendo os valores 21, 20, 18, 15, 17, 19, 23 e 18,acrescentar o valor 17 na primeira posicao, o valor 21 na quarta posicao e o valor 32 no final.

12

Page 13: Da Silva_Apostila_Uma breve introducao ao R Básico com RStudio

3.2 Ordenacao de elementos de um vetor

As principais operacoes de ordem dos elementos de um vetor sao:

sort(x ) : ordena os elementos do vetor em ordem crescentesort( x, decreasing=TRUE) : ordena os elementos do vetor em ordem decrescente

rev(x) : inverte a ordem dos elementos do vetor.order(x) : da posicao que o valor ordenado ocupa no vetor original.rank(x ) : posicao (posto) de ordem de cada elemento do vetor

Exemplo: seja o vetor idade contendo dos elementos 80, 61, 70, 64, 65, 68, 65.

> idade <- c(80, 61, 70, 64, 65, 68, 65)

a) Idades ordenadas em ordem crescente.

> sort(idade)

[1] 61 64 65 65 68 70 80

b) Idades ordenadas em ordem decrescente.

> sort(idade, decreasing = TRUE)

[1] 80 70 68 65 65 64 61

c) Vetor em ordem reversa (do ultimo para o primeiro).

> rev(idade)

[1] 65 68 65 64 70 61 80

d) Posicao que cada indivıduo do vetor ordenado ocupa no vetor original.

> order(idade)

[1] 2 4 5 7 6 3 1

e) Posto (ordem) de cada elemento do vetor.

Figura 5: Posto ou ordem (Rank) dos elementos de um vetor

> rank(idade)

[1] 7.0 1.0 6.0 2.0 3.5 5.0 3.5

f) O 6o valor da serie e:

13

Page 14: Da Silva_Apostila_Uma breve introducao ao R Básico com RStudio

> idade[rank(idade) == 6]

[1] 70

g) A ordem do valor 70 e:

> rank(idade)[idade == 70]

[1] 6

3.3 Inspecionando (pesquisando) elementos de um vetor

min(· · · ) : Retorna o valor mınimo entre os elementos de um vetor;pmin(· · · ) : Para um conjunto de vetores numericos de mesmo comprimento, retorna um

novo vetor onde o seu primeiro elemento e a valor mınimo entre os primeiroselementos do conjunto de vetores analisado, o segundo elemento e o valormınimo entre os segundos elementos do mesmo conjunto, e assim por diante;

max(· · · ) : Retorna o valor maximo entre os elementos de um vetor;pmax(· · · ) : Para um conjunto de vetores numericos de mesmo comprimento, retorna um

novo vetor onde o seu primeiro elemento e a valor maximo entre os primeiroselementos do conjunto de vetores analisado, o segundo elemento e o valormaximo entre os segundos elementos do mesmo conjunto, e assim por diante;

which(x, criterio) : Da a posicao, no vetor original x, cujo valor atenda a um criterio logico;which.max(x) : Da a posicao do valor maximo no vetor original x;which.min(x) : Da a posicao do valor mınimo no vetor original x;

length(x) : Da o comprimento (numero de elementos) do vetor x.

Exemplo: Sejam os vetores v1 = (1, 0, 4, 3, 3, 2), v2 = (4, 6, 7, 3, 0, 1), v3 = (6, 6, 2, 8, 4, 5)

> v1 = c(1, 0, 4, 3, 3, 2)

> v2 = c(4, 6, 7, 3, 0, 1)

> v3 = c(6, 6, 2, 8, 4, 5)

a) O valor mınimo do vetor v1 sera:

> min(v1)

[1] 0

b) O valor maximo do vetor v3 sera:

> max(v3)

[1] 8

c) O vetor de mınimos e de maximos entre os vetores v1, v2, v3 e:

v1 1 0 4 3 3 2v2 4 6 7 3 0 1v3 6 6 2 8 4 5

Min 1 0 2 3 0 1

Max 6 6 7 8 4 5

> pmin(v1, v2, v3)

14

Page 15: Da Silva_Apostila_Uma breve introducao ao R Básico com RStudio

[1] 1 0 2 3 0 1

> pmax(v1, v2, v3)

[1] 6 6 7 8 4 5

d) A posicao do valor 70 no vetor v4 e:

> v4 <- c(80, 61, 70, 64, 65, 81, 65)

> which(v4 == 70)

[1] 3

e) A posicao dos valores maiores ou iguais a 70 no vetor v4 e:

> which(v4 >= 70)

[1] 1 3 6

f) As posicoes dos valores maximo e mınimo no vetor v4 sao:

> which.min(v4)

[1] 2

> which.max(v4)

[1] 6

g) Contando elementos de um vetor

(i) comprimento ou quantidade de elementos;

> length(taxa)

[1] 11

(ii) quantidade de valores maiores que 0,30

> length(taxa[taxa > 0.3])

[1] 11

(iii) quantidade de valores maiores ou iguais que 0,30

> length(taxa[taxa >= 0.3])

[1] 11

(iv) quantidade de valores maiores que 0,35

> length(taxa[taxa > 0.35])

[1] 11

(v) quantidade de valores iguais a 0,35

> length(taxa[taxa == 0.35])

[1] 0

(vi) quantidade de valores iguais a 0,40

> length(taxa[taxa == 0.4])

[1] 0

(vii) quantidade de valores diferentes de 0,40

15

Page 16: Da Silva_Apostila_Uma breve introducao ao R Básico com RStudio

> length(taxa[taxa != 0.4])

[1] 11

h) Identificando valores que atendem uma condicao

> set.seed(56)

> v5 = sample((0:99)/100, 20)

> v5 > 0.5

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

[13] TRUE TRUE TRUE TRUE TRUE TRUE TRUE FALSE

> v5 == 0.5

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

[13] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE

> v5 != 0.5

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

[16] TRUE TRUE TRUE TRUE TRUE

3.4 Operacoes aritmeticas com vetores

a) Soma: Todas as operacoes aritmeticas sao aplicadas a todos os elementos do vetor. Somar ou sub-trair dois (ou mais) vetores significa somar ou subtrair membro a membro. Se X = (x1, x2, · · · , xn)e Y = (y1, y2, · · · , yn) sao dois vetores de tamanho n, entao:

X + Y = (x1 + y1, x2 + y2, · · · , xn + yn)

v1 1 0 4 3 3 2v2 4 6 7 3 0 1v3 6 6 2 8 4 5

soma 11 12 13 14 7 8

> v1 + v2 + v3

[1] 11 12 13 14 7 8

b) Multiplicacao: Ao multiplicar um vetor por uma constante, todos seus elementos ficam multi-plicados por essa constante. Multiplicar dois (ou mais)vetores de mesmo comprimento significamultiplicar membro a membro. Entao:

X ∗ Y = (x1 ∗ y1, x2 ∗ y2, · · · , xn ∗ yn)

v1 1 0 4 3 3 2v2 4 6 7 3 0 1v3 6 6 2 8 4 5

produto 24 0 56 72 0 10

> v1 * v2 * v3

[1] 24 0 56 72 0 10

16

Page 17: Da Silva_Apostila_Uma breve introducao ao R Básico com RStudio

c) Produto interno: O produto interno de dois vetores e definido como a soma do produto de seusmembros, segundo suas posicoes, ou seja: X%∗%Y = (x1∗y1+x2∗y2+, · · · ,+xn∗yn) e representaum escalar. Por exemplo:

v1 1 0 4 3 3 2 Somav2 4 6 7 3 0 1 ↓

produto 4 0 28 9 0 2 43

> v1 %*% v2

[,1]

[1,] 43

d) Divisao: Ao dividir um vetor por uma constante, todos seus elementos ficam divididos por essaconstante. Dividir dois (ou mais)vetores de mesmo comprimento significa dividir membro a mem-bro, ou seja:

X

Y= (

x1y1

,x2y2

, · · · , xnyn

)

> v1/pi

[1] 0.3183099 0.0000000 1.2732395 0.9549297 0.9549297 0.6366198

> v1/v3

[1] 0.1666667 0.0000000 2.0000000 0.3750000 0.7500000 0.4000000

e) Parte inteira e resto de uma divisao: A parte inteira da divisao e o resto da divisao de umvetor por um numero resulta um vetor com o resultado de cada elemento submetido a operacao.A parte inteira da divisao e o resto da divisao de um vetor por outro vetor de mesmo comprimentoresulta um vetor com o resultado da operacao elemento a elemento.

> c(18.42, 1.45, 7.11)/5

[1] 3.684 0.290 1.422

> c(18.42, 1.45, 7.11)%/%5

[1] 3 0 1

> c(18.42, 1.45, 7.11)%%5

[1] 3.42 1.45 2.11

Notar que quando um valor nao e divisivel por outro, o R retorna o proprio valor.

3.5 Vetor de sequencias

Define-se uma sequencia finita a1, a2, · · · , an como sendo um conjunto S, dotado das seguintes carac-terısticas:

a) Todos os seus elementos sao do mesmo tipo;

b) Os elementos sao denominados termos da sequencia;

17

Page 18: Da Silva_Apostila_Uma breve introducao ao R Básico com RStudio

c) Cada termo possui uma posicao definida, dentro do conjunto;

d) A posicao de cada termo e determinada por um numero natural, denominado ındice;

e) Cada termo possui um unico ındice, e cada ındice pertence a um unico termo (correspondenciabiunıvoca);

f) Dois termos so podem ser permutados se os seus respectivos ındices tambem forem.

No caso de uma seguencia numerica, a ordem dos elementos e determinada por uma lei ou uma funcaocujo domınio e o conjunto dos numeros naturais.

Exemplo:

• A sequencia dos quatro primeiros numeros naturais multiplos de 5 e (0, 5, 10, 15):

• A sequencia do numero de dias dos 12 meses de um ano bissexto e:

(31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31)

Os principais comandos utilizados para se produzir sequencias sao:

a : b : produz uma sequencia que comeca em a e termina em b, com incrementosunitarios.

seq(from,to, by) : produz uma sequencia que inicia em from, termina em to com incrementosde by.

rep(x,times) : repete o elemento x o numero de vezes definido por times.rep(x,each) : Se x e um vetor, o comando repete cada elemento o numero de vezes definido

por eachrep(x,len) : O comando repete uma sequencia ate atingir o numero de elementos definido

por len

Exemplo:

a) Sequencia iniciiando em 0 e terminando em 10 com incrementos unitarios.

> 0:10

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

b) Sequencia iniciando em 30 e terminando em 20 com incremento decrescente unitario

> 30:20

[1] 30 29 28 27 26 25 24 23 22 21 20

c) Sequencias com repeticao de valores utilizando a funcao rep()

(i) Repetindo duas vezes a sequencia de inteiros de 1 a 4.

> rep(1:4, times = 2)

[1] 1 2 3 4 1 2 3 4

(ii) Repetindo a sequencia de inteiros de 1 a 4 duas vezes cada numero.

> rep(1:4, each = 2)

[1] 1 1 2 2 3 3 4 4

(iii) Repetindo a sequencia de inteiros de 1 a 4 ate completar 7 elementos.

18

Page 19: Da Silva_Apostila_Uma breve introducao ao R Básico com RStudio

> rep(1:4, len = 7)

[1] 1 2 3 4 1 2 3

(iv) Repetindo a sequencia de inteiros de 1 a 4 duas vezes cada numero, ate completar 5 elementos.

> rep(1:4, each = 2, len = 5)

[1] 1 1 2 2 3

(v) Repetindo a sequencia de inteiros de 1 a 4 duas vezes cada numero, ate completar 10 elementos(com reciclagem).

> rep(1:4, each = 2, len = 10)

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

(vi) Repetindo duas vezes a sequencia de inteiros de 1 a 4 duas vezes cada numero.

> rep(1:4, each = 2, times = 2)

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

(vii) Repetindo uma sequencia que inicia e 20, termina em 45, em intervalos de 5, tres vezes cadanumero.

> rep(seq(20, 45, 5), each = 3)

[1] 20 20 20 25 25 25 30 30 30 35 35 35 40 40 40 45 45 45

(viii) Sequencia dos 10 primeiros numeros ımpares.

O numero ımpar e todo numero inteiro que ao ser dividido por 2 resulta em um numeroracional (nao inteiro). O termo geral da serie e 2n - 1.

> n = 10

> 2 * (1:n) - 1

[1] 1 3 5 7 9 11 13 15 17 19

(ix) Sequencia dos 10 primeiros numeros pares.

O numero par e todo numero inteiro que ao ser dividido por 2 resulta em um numero inteiro.O termo geral da serie e 2n.

> n = 10

> 2 * (1:n)

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

3.6 Vetores alfa-numericos

Um vetor e dito alfa-numerico quando os numeros sao tomados como caracteres numericos e nao serapossıvel operacoes matematicas com eles.

> (vetor.char <- c(0:10, "a"))

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

3.7 Lei da Reciclagem

Sob certas circunstancias o R retorna ao inıcio de uma sequencia (vetor) em busca de novos dados paracompletar uma tarefa. Essas sequencias devem ser multiplas uma da outra que se pretende alimentar.

Suponha que desejamos somar a sequencia de numeros de 1 a dez com a sequencia de numeros de 1 a2. Assim, terıamos como resultado:

19

Page 20: Da Silva_Apostila_Uma breve introducao ao R Básico com RStudio

x1 x2 x3 x4

...................

...............

....................... ......... ......... ...........

............

...............

..................•...................

...............

....................... ......... ......... ...........

............

...............

..................•...................

...............

....................... ......... ......... ...........

............

...............

..................•

.

.............................

...........................

.........................

.......................

........................................ ................. ................ ................

...........................

.....

..................

.....................

........................

...........................

..............................

- x1 x2 x3 x4

rec.

?

x1x2 x3x4

Figura 6: Lei da reciclagem na construcao de sequencias

1 + 1 = 22 + 2 = 43 + 1 = 44 + 2 = 65 + 1 = 66 + 2 = 87 + 1 = 88 + 2 = 109 + 1 = 10

10 + 2 = 12

Como funciona isso! O R toma o primeiro valor da primeira sequencia e soma com o primeiro valor dasegunda. Depois toma o segundo valor da primeira sequencia e soma com o segundo valor da segunda.RECICLA a segunda sequencia. Toma o terceiro valor da primeira sequencia e soma com o primeirovalor da segunda sequencia, toma o quarto valor da primeira sequencia e soma com o segundo valorda segunda sequencia. RECICLA a segunda sequencia e assim por diante.

1 + 1 = 22 + 2 = 4 Recila a segunda sequencia3 + 1 = 44 + 2 = 6 Recila a segunda sequencia5 + 1 = 66 + 2 = 8 Recila a segunda sequencia7 + 1 = 88 + 2 = 10 Recila a segunda sequencia9 + 1 = 10

10 + 2 = 12 Encerra as duas sequencias

Com o R farıamos assim:

> 1:10 + c(1, 2)

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

Exemplos: Sejam as sequencias que sao multiplas uma da outra

> 1:10 + 1:5

[1] 2 4 6 8 10 7 9 11 13 15

> (1:2) * (1:10)

20

Page 21: Da Silva_Apostila_Uma breve introducao ao R Básico com RStudio

[1] 1 4 3 8 5 12 7 16 9 20

> (1:10)/(1:5)

[1] 1.000000 1.000000 1.000000 1.000000 1.000000 6.000000 3.500000 2.666667

[9] 2.250000 2.000000

> (1:10)^(1:2)

[1] 1 4 3 16 5 36 7 64 9 100

3.8 Aplicando funcoes a vetores

Na estatstica um VETOR de comprimento n contem n informacoes de uma unica variavel (ou umaunica observacao de n variaveis). A aplicacao de uma funcao em um vetor faz com que cada elementodo domınio (conjunto de valores registrados da variavel) seja “transformado” pela funcao.

Exemplo:

> Y = c(24.1, 19.3, 19.5, 21, 22.5, 22.9, 17.6, 22.8, 20.2, 18,

+ 19.8, 18.6, 20, 24.3, 19.1, 21.1, 22.1, 22.8, 22.6, 23.1)

> round(sqrt(Y), 2)

[1] 4.91 4.39 4.42 4.58 4.74 4.79 4.20 4.77 4.49 4.24 4.45 4.31 4.47 4.93 4.37

[16] 4.59 4.70 4.77 4.75 4.81

> sum(Y)

[1] 421.4

> round(sin(Y), 2)

[1] -0.86 0.44 0.61 0.84 -0.49 -0.79 -0.95 -0.72 0.98 -0.75 0.81 -0.25

[13] 0.91 -0.74 0.25 0.78 -0.11 -0.72 -0.57 -0.90

> round(log(Y), 2)

[1] 3.18 2.96 2.97 3.04 3.11 3.13 2.87 3.13 3.01 2.89 2.99 2.92 3.00 3.19 2.95

[16] 3.05 3.10 3.13 3.12 3.14

> round(log2(Y), 2)

[1] 4.59 4.27 4.29 4.39 4.49 4.52 4.14 4.51 4.34 4.17 4.31 4.22 4.32 4.60 4.26

[16] 4.40 4.47 4.51 4.50 4.53

Operacao aninhada: Uma equacao pode ser escrita com vetores aninhados da seguinte forma:

> round(Y.calc <- sin(Y <- 1:6) + cos(Y) - log(pi) * (Y/pi), 2)

[1] 1.02 -0.24 -1.94 -2.87 -2.50 -1.51

21

Page 22: Da Silva_Apostila_Uma breve introducao ao R Básico com RStudio

3.9 Tipos especiais de vetores

a) Vetores de caracteres

> (nomes <- c("Marta", "Regina", "Mario", "Pedro", "Mauricio"))

[1] "Marta" "Regina" "Mario" "Pedro" "Mauricio"

> letters

[1] "a" "b" "c" "d" "e" "f" "g" "h" "i" "j" "k" "l" "m" "n" "o" "p" "q" "r" "s"

[20] "t" "u" "v" "w" "x" "y" "z"

> LETTERS

[1] "A" "B" "C" "D" "E" "F" "G" "H" "I" "J" "K" "L" "M" "N" "O" "P" "Q" "R" "S"

[20] "T" "U" "V" "W" "X" "Y" "Z"

> (let5 <- letters[1:5])

[1] "a" "b" "c" "d" "e"

> (let10 <- LETTERS[11:20])

[1] "K" "L" "M" "N" "O" "P" "Q" "R" "S" "T"

b) Vetores de datas

> format(ISOdate(2011, 1:12, 1), "%B")

[1] "janeiro" "fevereiro" "marco" "abril" "maio" "junho"

[7] "julho" "agosto" "setembro" "outubro" "novembro" "dezembro"

> mes.curto <- format(ISOdate(2011, 1:12, 1), "%b")

> mes.curto

[1] "Jan" "Fev" "Mar" "Abr" "Mai" "Jun" "Jul" "Ago" "Set" "Out" "Nov" "Dez"

c) Vetor de horas:minutos

> format(seq(ISOdate(2011, 2, 1, 0, 0, 0), ISOdate(2011, 2, 1,

+ 10, 59, 59), by = "30 mins"), "%H:%M")

[1] "00:00" "00:30" "01:00" "01:30" "02:00" "02:30" "03:00" "03:30" "04:00"

[10] "04:30" "05:00" "05:30" "06:00" "06:30" "07:00" "07:30" "08:00" "08:30"

[19] "09:00" "09:30" "10:00" "10:30"

d) Juntando elementos de um vetor. Util para vetor de caracteres.

paste(a,b): junta os dados do vetor “a” com dados do vetor “b”, caso a caso (com possibilidade dereciclagem)

> nomes

[1] "Marta" "Regina" "Mario" "Pedro" "Mauricio"

> paste(nomes, 10:1)

22

Page 23: Da Silva_Apostila_Uma breve introducao ao R Básico com RStudio

[1] "Marta 10" "Regina 9" "Mario 8" "Pedro 7" "Mauricio 6"

[6] "Marta 5" "Regina 4" "Mario 3" "Pedro 2" "Mauricio 1"

> paste("Mario", "Casado", sep = " - ")

[1] "Mario - Casado"

> paste("Mario", 5, sep = "")

[1] "Mario5"

> paste(5, "Mario", sep = ") ")

[1] "5) Mario"

> paste(1:10, nomes, sep = ") ")

[1] "1) Marta" "2) Regina" "3) Mario" "4) Pedro" "5) Mauricio"

[6] "6) Marta" "7) Regina" "8) Mario" "9) Pedro" "10) Mauricio"

> paste(letters[1:6], 1:9, sep = "")

[1] "a1" "b2" "c3" "d4" "e5" "f6" "a7" "b8" "c9"

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

[1] "T1" "T1" "T1" "T1" "T2" "T2" "T2" "T2" "T3" "T3" "T3"

3.10 Operacoes logicas em um vetor

Aplicando mudancas seletivas em elementos de um vetor com o comando IF ELSE.

Exemplo: Considerando o vetor de 20 idades de indivıduos com ate 30 anos (inclusive).

> (idade = sample(1:30, 20, replace = TRUE))

[1] 12 11 21 6 15 24 6 3 4 10 10 26 23 12 19 14 25 28 23 5

a) Atribuir 1 para os indivıduos entre 1 e 10 anos e zero para os demais. Somar o resultado. O quesignifica o resultado dessa soma?

> (idade.jovem = ifelse(idade >= 1 & idade <= 10, 1, 0))

[1] 0 0 0 1 0 0 1 1 1 1 1 0 0 0 0 0 0 0 0 1

> sum(idade.jovem)

[1] 7

b) Atribuir 1 para os indivıduos entre 1 e 10 anos, 2 para os indivıduos entre 11 e 20 anos e 3 para osindivıduos entre 21 e 30 anos.

> ifelse(idade >= 1 & idade <= 10, 1, ifelse(idade >= 11 & idade <=

+ 20, 2, 3))

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

23

Page 24: Da Silva_Apostila_Uma breve introducao ao R Básico com RStudio

4 FATORES

Um objeto do tipo Fator e um objeto diferente de um vetor. Fator e um tipo de variavel indicadora.Para uso com os conceitos de estatıstica, um vetor registra as observacoes de variaveis e um fatorregistra o tipo da observacao

Exemplos:

a) Considere uma variavel onde cada observacao esteja associada a um dentre tres tipos de tratamentospossıveis.

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

[1] T1 T1 T1 T1 T2 T2 T2 T2 T3 T3 T3

Levels: T1 T2 T3

b) Conasidere um vetor contendo os Estados do Brasil (26 Estados + Distrito Federal)

> rm(list = ls())

> EstadosBrasil = c("AC", "AL", "AP", "AM", "BA", "CE", "DF", "ES",

+ "GO", "MA", "MT", "MS", "MG", "PA", "PB", "PR", "PE", "PI",

+ "RN", "RS", "RJ", "RO", "RR", "SC", "SP", "SE", "TO")

Gerando uma amostra dos Estados, de tamanho 50.

> set.seed(56)

> (estados.amostra = sample(EstadosBrasil, 50, replace = TRUE))

[1] "MT" "RS" "GO" "RS" "MA" "AP" "CE" "BA" "RS" "PA" "SE" "MG" "RN" "SC" "PE"

[16] "MG" "RJ" "RJ" "PA" "BA" "MT" "MA" "RN" "CE" "PA" "RO" "BA" "AP" "AM" "GO"

[31] "GO" "RR" "RS" "MT" "PE" "MS" "RR" "SP" "RJ" "BA" "RJ" "TO" "SP" "GO" "PB"

[46] "RN" "RJ" "SC" "RS" "PI"

Note que a amostra nao tem o Estado PR.

Vamos agora converter o vetor amostra de Estados em fator. Os nıveis serao baseados no objetofonte da amostra.

> (estados.amostra.fator <- factor(estados.amostra, levels = EstadosBrasil))

[1] MT RS GO RS MA AP CE BA RS PA SE MG RN SC PE MG RJ RJ PA BA MT MA RN CE PA

[26] RO BA AP AM GO GO RR RS MT PE MS RR SP RJ BA RJ TO SP GO PB RN RJ SC RS PI

27 Levels: AC AL AP AM BA CE DF ES GO MA MT MS MG PA PB PR PE PI RN RS ... TO

Note as diferencas entre o tipo do objeto da amostra sem conversao (estados.amostra) e objetoconvertido (estados.amostra.fator). Veja o efeito causado pelo comando table nos diferentes objetos.

> class(estados.amostra)

[1] "character"

> class(estados.amostra.fator)

[1] "factor"

> table(estados.amostra)

24

Page 25: Da Silva_Apostila_Uma breve introducao ao R Básico com RStudio

estados.amostra

AM AP BA CE GO MA MG MS MT PA PB PE PI RJ RN RO RR RS SC SE SP TO

1 2 4 2 4 2 2 1 3 3 1 2 1 5 3 1 2 5 2 1 2 1

> table(estados.amostra.fator)

estados.amostra.fator

AC AL AP AM BA CE DF ES GO MA MT MS MG PA PB PR PE PI RN RS RJ RO RR SC SP SE

0 0 2 1 4 2 0 0 4 2 3 1 2 3 1 0 2 1 3 5 5 1 2 2 2 1

TO

1

A exclusao de um elemento do objeto fator nao exclui o atributo. No exemplo, o elemento naposicao 36 corresponde a MS (unica ocorrencia), entretanto, sua exclusao nao elimina o nıvelcorrespondente, continuando como nıvel possıvel.

> (estados.amostra.fator.sel <- estados.amostra.fator[-36])

[1] MT RS GO RS MA AP CE BA RS PA SE MG RN SC PE MG RJ RJ PA BA MT MA RN CE PA

[26] RO BA AP AM GO GO RR RS MT PE RR SP RJ BA RJ TO SP GO PB RN RJ SC RS PI

27 Levels: AC AL AP AM BA CE DF ES GO MA MT MS MG PA PB PR PE PI RN RS ... TO

c) Extraindo os Estados da regiao Sul na amostra de estados.

> (est.sul.fator <- factor(estados.amostra, levels = c("PR", "SC",

+ "RS")))

[1] <NA> RS <NA> RS <NA> <NA> <NA> <NA> RS <NA> <NA> <NA> <NA> SC <NA>

[16] <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA>

[31] <NA> <NA> RS <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA>

[46] <NA> <NA> SC RS <NA>

Levels: PR SC RS

> table(est.sul.fator)

est.sul.fator

PR SC RS

0 2 5

d) Criando fatores com nıveis ordenados. Considere um vetor com observacoes classificadas em tresnıveis: baixo, medio e alto. Note que existe uma ordenacao natural entre as observacoes, entretantoo R nao entende isto automaticamente. Precisamos orienta-lo neste sentido. Sem essa orientacaoteremos:

> (grau <- c("medio", "baixo", "medio", "medio", "baixo", "baixo",

+ "alto", "medio", "alto", "medio", "baixo"))

[1] "medio" "baixo" "medio" "medio" "baixo" "baixo" "alto" "medio" "alto"

[10] "medio" "baixo"

> factor(grau)

[1] medio baixo medio medio baixo baixo alto medio alto medio baixo

Levels: alto baixo medio

25

Page 26: Da Silva_Apostila_Uma breve introducao ao R Básico com RStudio

> table(factor(grau))

alto baixo medio

2 4 5

Considerando diretivas de orientacao teremos:

> factor(grau, ord = T, levels = c("baixo", "medio", "alto"))

[1] medio baixo medio medio baixo baixo alto medio alto medio baixo

Levels: baixo < medio < alto

> table(factor(grau, ord = T, levels = c("baixo", "medio", "alto")))

baixo medio alto

4 5 2

e) Pode-se gerar um fator com o comando gl(n,k), onde n representa o numero de nıveis e k o numerode repeticoes.

> gl(3, 5)

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

Levels: 1 2 3

26

Page 27: Da Silva_Apostila_Uma breve introducao ao R Básico com RStudio

5 MATRIZES

Definimos uma matriz como sendo qualquer tabela retangular (bidimensional) de objetos matematicos(numeros, funcoes, vetores, etc) que pode ser operarada em bloco, simultaneamente3. A notacao doR para montar uma matriz e:

matrix(data = NA, nrow = 1, ncol = 1, byrow = FALSE,

dimnames = NULL)

Onde data representa um vetor de dados.

Exemplos:

a) Construir uma matriz 4x3 a partir do vetor (1 2 3 4 5 6 7 8 9 10 11 12), preenchida por linhas

> (m1 <- matrix(1:12, ncol = 3, byrow = T))

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

[1,] 1 2 3

[2,] 4 5 6

[3,] 7 8 9

[4,] 10 11 12

b) Construir uma matriz 4x3 a partir do vetor (1 2 3 4 5 6 7 8 9 10 11 12), preenchida por colunas

> (m2 <- matrix(1:12, ncol = 3, byrow = F))

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

[1,] 1 5 9

[2,] 2 6 10

[3,] 3 7 11

[4,] 4 8 12

Uma matriz tabem pode ser gerada com os comandos cbind( ) e rbind( ), pela combinacao de vetorescoluna ou vetores linha de mesmo comprimento, respectivamente

Exemplo:

> cbind(1:5, 6:10)

[,1] [,2]

[1,] 1 6

[2,] 2 7

[3,] 3 8

[4,] 4 9

[5,] 5 10

> cbind(1:5, 6)

3http://www.mat.ufrgs.br/ portosil/minmatr.html

27

Page 28: Da Silva_Apostila_Uma breve introducao ao R Básico com RStudio

[,1] [,2]

[1,] 1 6

[2,] 2 6

[3,] 3 6

[4,] 4 6

[5,] 5 6

> is.matrix(cbind(1:5, 6))

[1] TRUE

· · · um outro exemplo (notar o comando abreviado byrow = by)

> matrix(c(1, 5, 7, 4), 2, by = T)

[,1] [,2]

[1,] 1 5

[2,] 7 4

> (x <- cbind(x1 = 3, x2 = c(4:1, 2:5)))

x1 x2

[1,] 3 4

[2,] 3 3

[3,] 3 2

[4,] 3 1

[5,] 3 2

[6,] 3 3

[7,] 3 4

[8,] 3 5

5.1 Nomeando linhas e colunas da matriz

> dimnames(m1) <- list(c("L1", "L2", "L3", "L4"), c("C1", "C2",

+ "C3"))

> m1

C1 C2 C3

L1 1 2 3

L2 4 5 6

L3 7 8 9

L4 10 11 12

· · · ou

(m1.a <- matrix(1:12, ncol=3, byrow=T, dimnames = list(c(’L1’,’L2’,’L3’,’L4’), c(’C1’,’C2’,’C3’)))m1.a

· · · e ainda, renomeando somente as linhas (primeira dimensao) da matriz.

> (dimnames(x)[[1]] <- letters[1:8])

[1] "a" "b" "c" "d" "e" "f" "g" "h"

28

Page 29: Da Silva_Apostila_Uma breve introducao ao R Básico com RStudio

5.2 Inspecionando uma matriz

length(x) : indica o nmeros de elementos da matrizdim(x) : indica a dimensao da matriz (linhas x colunas)nrow(x) : indica o numero de linhas da matrizncol(x) : indica o numero de colunas da matrizx[i,j] : indica o elemento no cruzamento da i−esima linha com a j−’esima colunax[,j] : indica todos os elementos da j−’esima colunax[i,] : indica todos os elementos da i−esima linhax[a:b,c:d] : da a submatriz definida pelas linhas entre a e b e entre as colunas c e d.diag(n) : gera uma matriz identidade de ordem n (n x ndimnames(x)[[1]] : renomeia somente as linhas (primeira dimensao) da matriz xdimnames(x)[[2]] : renomeia somente as colunas (segunda dimensao) da matriz x

5.3 Operacoes basicas com matrizes

t( ) : transposta da matriz%*% : produto internosolve : solucao de sistemas quadraticos (inversa)

Exemplos:

> (m4 <- matrix(1:6, nc = 3))

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

[1,] 1 3 5

[2,] 2 4 6

> (m5 <- matrix(10 * (1:6), nc = 3))

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

[1,] 10 30 50

[2,] 20 40 60

> m4 + m5

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

[1,] 11 33 55

[2,] 22 44 66

> m4 * m5

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

[1,] 10 90 250

[2,] 40 160 360

> m5 - m4

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

[1,] 9 27 45

[2,] 18 36 54

29

Page 30: Da Silva_Apostila_Uma breve introducao ao R Básico com RStudio

> m5/m4

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

[1,] 10 10 10

[2,] 10 10 10

> t(m4)

[,1] [,2]

[1,] 1 2

[2,] 3 4

[3,] 5 6

> dim(m4)

[1] 2 3

> dim(t(m4))

[1] 3 2

> dim(m5)

[1] 2 3

> m6 <- t(m4) %*% m5

> m6

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

[1,] 50 110 170

[2,] 110 250 390

[3,] 170 390 610

> det(m6)

[1] -4.054396e-12

Consideremos o seguinte sistema de equacoes lineares (Ax = b)

x + 3y − z = 10

5x − 2y + z = 152x + y − z = 7

> (mat <- matrix(c(1, 5, 2, 3, -2, 1, -1, 1, -1), nc = 3))

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

[1,] 1 3 -1

[2,] 5 -2 1

[3,] 2 1 -1

30

Page 31: Da Silva_Apostila_Uma breve introducao ao R Básico com RStudio

> (vec <- c(10, 15, 7))

[1] 10 15 7

> solve(mat, vec)

[1] 3.615385 3.307692 3.538462

5.4 Aplicando funcoes a matrizes

O comando apply oferece uma maneira elegante de manipular matrizes (ou tabelas), aplicando-sesucessivamente uma funcao determinada, a cada linha (primeira dimensao), cada coluna (segundadimensao) ou a cada nıvel em uma dimensao superior a 2. A sintaxe do comando e:

apply(X, n, FUN, ...)

onde X e a matriz (ou tabela) a ser utilizada, n e um valor, que quando for igual a 1 indicara quea funcao devera ser aplicada as linhas e quando for 2 a funcao devera aplicada as colunas. FUN e afuncao a ser aplicada. No caso da funcao ser: +, %*%, etc, esta deve ser colocada entre chaves.

Exemplo: Seja a seguinte matriz A:

A = (aij)7×5 =

5.7 5.7 4.4 5.7 4.77.0 5.6 5.0 4.9 5.23.6 4.8 4.7 5.0 5.92.9 5.6 2.3 4.8 4.23.1 4.1 5.1 4.2 3.45.2 5.9 6.2 6.5 7.13.4 5.5 4.8 5.9 5.1

a) Soma das colunas

> A = matrix(c(5.7, 5.7, 4.4, 5.7, 4.7, 7, 5.6, 5, 4.9, 5.2, 3.6,

+ 4.8, 4.7, 5, 5.9, 2.9, 5.6, 2.3, 4.8, 4.2, 3.1, 4.1, 5.1,

+ 4.2, 3.4, 5.2, 5.9, 6.2, 6.5, 7.1, 3.4, 5.5, 4.8, 5.9, 5.1),

+ 7, by = T)

> apply(A, 2, sum)

[1] 30.9 37.2 32.5 37.0 35.6

b) Media das colunas

> apply(A, 2, mean)

[1] 4.414286 5.314286 4.642857 5.285714 5.085714

c) Media das linhas

> apply(A, 1, mean)

[1] 5.24 5.54 4.80 3.96 3.98 6.18 4.94

d) Enfeitando a matriz

31

Page 32: Da Silva_Apostila_Uma breve introducao ao R Básico com RStudio

> col.sums <- apply(A, 2, sum)

> row.sums <- apply(A, 1, sum)

> rbind(cbind(A, Rtot = row.sums), Ctot = c(col.sums, sum(col.sums)))

Rtot

5.7 5.7 4.4 5.7 4.7 26.2

7.0 5.6 5.0 4.9 5.2 27.7

3.6 4.8 4.7 5.0 5.9 24.0

2.9 5.6 2.3 4.8 4.2 19.8

3.1 4.1 5.1 4.2 3.4 19.9

5.2 5.9 6.2 6.5 7.1 30.9

3.4 5.5 4.8 5.9 5.1 24.7

Ctot 30.9 37.2 32.5 37.0 35.6 173.2

5.5 Matrizes multidimensionais (array)

Um objeto do tipo ARRAY e um objeto semelhante a MATRIX, mas com dimensao maior do que2(matrizes n-dimensionais). A sintaxe do comando e:

array(data, dim)

onde data corresponde a um vetor de dados, e dim um vetor onde cada elemento corresponde a umadimensao do array. A estrutura ARRAY e obrigatoriamente preenchida por colunas em cada dimensao.

Exemplo: Sejam as matrizes A, B e C, cada uma com dimensao 3 x 4. O ARRAY que “junta” essasmatrizes tera dimensao 3 (linhas) x 4 (colunas) x 3 (camadas), necessitando de um vetor de dadoscom 36 elementos (3x4x3=36).

A = (aij)3×4 =

1 4 7 102 5 8 113 6 9 12

B = (bij)3×4 =

13 16 19 2214 17 20 2315 18 21 24

C = (cij)3×4 =

25 28 31 3426 29 32 3527 30 33 36

> (M3 = array(1:36, dim = c(3, 4, 3)))

, , 1

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

[1,] 1 4 7 10

[2,] 2 5 8 11

[3,] 3 6 9 12

, , 2

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

[1,] 13 16 19 22

32

Page 33: Da Silva_Apostila_Uma breve introducao ao R Básico com RStudio

[2,] 14 17 20 23

[3,] 15 18 21 24

, , 3

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

[1,] 25 28 31 34

[2,] 26 29 32 35

[3,] 27 30 33 36

Para visualizarmos todos os valores da terceira coluna da segunda matriz fazemos:

> M3[, 3, 2]

[1] 19 20 21

33

Page 34: Da Silva_Apostila_Uma breve introducao ao R Básico com RStudio

6 TABELAS (data.frame)

A tabela e dos mais importantes objetos para aplicacao basica dos metodos estatısticos no R. Constitui-se por informacoes gerais de um banco de dados. Nela, cada coluna contem as informacoes de umaparticular variavel e cada linha representa um registro completo de um elemento amostral. As princi-pais caracterısticas desse objeto sao:

• Todas as colunas devem conter o mesmo numero de elementos;

• Elemento faltante, perdido, nao observado devera ser registrado com NA;

• Os registros de uma coluna especıfica devem ser todos do mesmo tipo (exceto se o registro forum NA);

• Cada linha representa um registro completo e devera conter informacao em todas as colunas;

O objeto Tabela utiliza o comando data.frame em sua elaboracao, controlada pelos seguintes argumen-tos:

data.frame(..., row.names = NULL, check.rows = FALSE,

check.names = TRUE,

stringsAsFactors = TRUE)

Utilizaremos, como aplicacao inicial, a forma mais simples:

data.frame(Var1= ..., Var2= .... ...... VarN = ....)

Exemplos:

a) Considere como exemplo, a Tabela 1 que contem 7 variaveis (estado civil, grau de instrucao, numerode filhos, numero de salarios, idade e regiao de procedencia) e 36 casos (funcionarios)

> EC = c("solteiro", "casado", "casado", "solteiro", "solteiro",

+ "casado", "solteiro", "solteiro", "casado", "solteiro", "casado",

+ "solteiro", "solteiro", "casado", "casado", "solteiro", "casado",

+ "casado", "solteiro", "solteiro", "casado", "solteiro", "solteiro",

+ "casado", "casado", "casado", "solteiro", "casado", "casado",

+ "casado", "solteiro", "casado", "casado", "solteiro", "casado",

+ "casado")

> GI = c("1oGrau", "1oGrau", "1oGrau", "2oGrau", "1oGrau", "1oGrau",

+ "1oGrau", "1oGrau", "2oGrau", "2oGrau", "2oGrau", "1oGrau",

+ "2oGrau", "1oGrau", "2oGrau", "2oGrau", "2oGrau", "1oGrau",

+ "3oGrau", "2oGrau", "2oGrau", "2oGrau", "1oGrau", "3oGrau",

+ "2oGrau", "2oGrau", "1oGrau", "2oGrau", "2oGrau", "2oGrau",

+ "3oGrau", "2oGrau", "3oGrau", "3oGrau", "2oGrau", "3oGrau")

> NF = c(NA, 1, 2, NA, NA, 0, NA, NA, 1, NA, 2, NA, NA, 3, 0, NA,

+ 1, 2, NA, NA, 1, NA, NA, 0, 2, 2, NA, 0, 5, 2, NA, 1, 3,

+ NA, 2, 3)

> NS = c(4, 4.56, 5.25, 5.73, 6.26, 6.66, 6.86, 7.39, 7.59, 7.44,

+ 8.12, 8.46, 8.74, 8.95, 9.13, 9.35, 9.77, 9.8, 10.53, 10.76,

+ 11.06, 11.59, 12, 12.79, 13.23, 13.6, 13.85, 14.69, 14.71,

+ 15.99, 16.22, 16.61, 17.26, 18.75, 19.4, 23.3)

34

Page 35: Da Silva_Apostila_Uma breve introducao ao R Básico com RStudio

Tabela 1: Dados simulados de 36 funcionarios da Cia. Milsa’

Funcionario Est. Civil Instrucao # Filhos Salario Ano Mes Regiao

1 solteiro 1o¯

Grau - 4,00 26 3 interior2 casado 1o

¯Grau 1 4,56 32 10 capital

3 casado 1o¯

Grau 2 5,25 36 5 capital4 solteiro 2o

¯Grau - 5,73 20 10 outro

5 solteiro 1o¯

Grau - 6,26 40 7 outro6 casado 1o

¯Grau 0 6,66 28 0 interior

7 solteiro 1o¯

Grau - 6,86 41 0 interior8 solteiro 1o

¯Grau - 7,39 43 4 capital

9 casado 2o¯

Grau 1 7,59 34 10 capital10 solteiro 2o

¯Grau - 7,44 23 6 outro

11 casado 2o¯

Grau 2 8,12 33 6 interior12 solteiro 1o

¯Grau - 8,46 27 11 capital

13 solteiro 2o¯

Grau - 8,74 37 5 outro14 casado 1o

¯Grau 3 8,95 44 2 outro

15 casado 2o¯

Grau 0 9,13 30 5 interior16 solteiro 2o

¯Grau - 9,35 38 8 outro

17 casado 2o¯

Grau 1 9,77 31 7 capital18 casado 1o

¯Grau 2 9,80 39 7 outro

19 solteiro Superior - 10,53 25 8 interior20 solteiro 2o

¯Grau - 10,76 37 4 interior

21 casado 2o¯

Grau 1 11,06 30 9 outro22 solteiro 2o

¯Grau - 11,59 34 2 capital

23 solteiro 1o¯

Grau - 12,00 41 0 outro24 casado Superior 0 12,79 26 1 outro25 casado 2o

¯Grau 2 13,23 32 5 interior

26 casado 2o¯

Grau 2 13,60 35 0 outro27 solteiro 1o

¯Grau - 13,85 46 7 outro

28 casado 2o¯

Grau 0 14,69 29 8 interior29 casado 2o

¯Grau 5 14,71 40 6 interior

30 casado 2o¯

Grau 2 15,99 35 10 capital31 solteiro Superior - 16,22 31 5 outro32 casado 2o

¯Grau 1 16,61 36 4 interior

33 casado Superior 3 17,26 43 7 capital34 solteiro Superior - 18,75 33 7 capital35 casado 2o

¯Grau 2 19,40 48 11 capital

36 casado Superior 3 23,30 42 2 interiorFonte: Bussab, Wilton de O.; Moretin, Pedro A. Estatıstica Basica. 5.ed. Sao Paulo: Saraiva, 2003.

> ANO = c(26, 32, 36, 20, 40, 28, 41, 43, 34, 23, 33, 27, 37, 44,

+ 30, 38, 31, 39, 25, 37, 30, 34, 41, 26, 32, 35, 46, 29, 40,

+ 35, 31, 36, 43, 33, 48, 42)

> MES = c(3, 10, 5, 10, 7, 0, 0, 4, 10, 6, 6, 11, 5, 2, 5, 8, 7,

+ 7, 8, 4, 9, 2, 0, 1, 5, 0, 7, 8, 6, 10, 5, 4, 7, 7, 11, 2)

> ORI = c("interior", "capital", "capital", "outro", "outro", "interior",

+ "interior", "capital", "capital", "outro", "interior", "capital",

+ "outro", "outro", "interior", "outro", "capital", "outro",

+ "interior", "interior", "outro", "capital", "outro", "outro",

+ "interior", "outro", "outro", "interior", "interior", "capital",

35

Page 36: Da Silva_Apostila_Uma breve introducao ao R Básico com RStudio

+ "outro", "interior", "capital", "capital", "capital", "interior")

> tabela = data.frame(cbind(EC, GI, NF, NS, ANO, MES, ORI), stringsAsFactors = FALSE)

Aqui foi utilizado o argumento stringsAsFactors = FALSE para evitar que todas as colunas da tabelafossem tratadas como fator.

b) Exemplo de uma tabela com o nome das colunas automatico

> d <- data.frame(cbind(1, 1:10, sample(LETTERS, 10, replace = TRUE)))

> is.data.frame(d)

[1] TRUE

c) Mais um exemplo

> (d1 <- data.frame(X = 1:10, Y = c(51, 54, 61, 67, 68, 75, 77,

+ 75, 80, 82)))

X Y

1 1 51

2 2 54

3 3 61

4 4 67

5 5 68

6 6 75

7 7 77

8 8 75

9 9 80

10 10 82

> names(d1)

[1] "X" "Y"

> d1$X

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

d) Outro exemplo onde cada conjunto de 5 elementos segue um modelo Y= cte + aleat

> set.seed(556)

> (d2 <- data.frame(Y = c(round(9 + rnorm(5, sd = 2.3), 1), round(16 +

+ rnorm(5, sd = 2), 1), round(4 + rnorm(5, sd = 2.1), 1))))

Y

1 9.6

2 7.9

3 6.0

4 10.2

5 8.7

6 13.9

7 17.2

8 15.9

9 15.9

10 12.4

36

Page 37: Da Silva_Apostila_Uma breve introducao ao R Básico com RStudio

11 4.0

12 8.8

13 4.6

14 4.4

15 1.0

> names(d2)

[1] "Y"

e) Ampliacao de d2 4

> d2$lev <- gl(3, 5)

> d2

Y lev

1 9.6 1

2 7.9 1

3 6.0 1

4 10.2 1

5 8.7 1

6 13.9 2

7 17.2 2

8 15.9 2

9 15.9 2

10 12.4 2

11 4.0 3

12 8.8 3

13 4.6 3

14 4.4 3

15 1.0 3

> sum(d2$Y)

[1] 140.5

> by(d2$Y, d2$lev, sum)

d2$lev: 1

[1] 42.4

------------------------------------------------------------

d2$lev: 2

[1] 75.3

------------------------------------------------------------

d2$lev: 3

[1] 22.8

6.1 Abrindo as colunas de uma tabela

Embora a tabela seja um objeto unico, qualquer coluna dela pode ser acessada independentemente daoutra, separando o seu nome do nome do objeto, com o sımbolo de cifrao ($). Por exemplo, para sereferir a coluna EC - Estado Civil, fazemos:

4gl(n,k) gera fatores. n: nr de nıveis k: repeticoes.

37

Page 38: Da Silva_Apostila_Uma breve introducao ao R Básico com RStudio

> tabela$EC

[1] "solteiro" "casado" "casado" "solteiro" "solteiro" "casado"

[7] "solteiro" "solteiro" "casado" "solteiro" "casado" "solteiro"

[13] "solteiro" "casado" "casado" "solteiro" "casado" "casado"

[19] "solteiro" "solteiro" "casado" "solteiro" "solteiro" "casado"

[25] "casado" "casado" "solteiro" "casado" "casado" "casado"

[31] "solteiro" "casado" "casado" "solteiro" "casado" "casado"

Para exibirmos os nomes das colunas da tabela, utiliza-se o comando names( )

> names(tabela)

[1] "EC" "GI" "NF" "NS" "ANO" "MES" "ORI"

Outra forma de se trabalhar com as colunas de uma tabela, sem ter que colocar o seu nome antes donome da coluna (variavel) em questao), e “abrindo-se” o objeto com o comando attach( ).

> attach(tabela)

The following object(s) are masked _by_ '.GlobalEnv':

ANO, EC, GI, MES, NF, NS, ORI

> EC

[1] "solteiro" "casado" "casado" "solteiro" "solteiro" "casado"

[7] "solteiro" "solteiro" "casado" "solteiro" "casado" "solteiro"

[13] "solteiro" "casado" "casado" "solteiro" "casado" "casado"

[19] "solteiro" "solteiro" "casado" "solteiro" "solteiro" "casado"

[25] "casado" "casado" "solteiro" "casado" "casado" "casado"

[31] "solteiro" "casado" "casado" "solteiro" "casado" "casado"

> GI

[1] "1oGrau" "1oGrau" "1oGrau" "2oGrau" "1oGrau" "1oGrau" "1oGrau" "1oGrau"

[9] "2oGrau" "2oGrau" "2oGrau" "1oGrau" "2oGrau" "1oGrau" "2oGrau" "2oGrau"

[17] "2oGrau" "1oGrau" "3oGrau" "2oGrau" "2oGrau" "2oGrau" "1oGrau" "3oGrau"

[25] "2oGrau" "2oGrau" "1oGrau" "2oGrau" "2oGrau" "2oGrau" "3oGrau" "2oGrau"

[33] "3oGrau" "3oGrau" "2oGrau" "3oGrau"

> NF

[1] NA 1 2 NA NA 0 NA NA 1 NA 2 NA NA 3 0 NA 1 2 NA NA 1 NA NA 0 2

[26] 2 NA 0 5 2 NA 1 3 NA 2 3

Para “fechar” novamente o objeto, utiliza-se o comando detach.

> detach(tabela)

38

Page 39: Da Silva_Apostila_Uma breve introducao ao R Básico com RStudio

6.2 Aplicando uma funcao a uma tabela (sapply)

O comando R para aplicar uma funcao as colunas de uma tabela e:

sapply(x,function)

onde: x e o nome do objeto que contem a tabela e function e a funcao a ser empregada as colunas databela.

Exemplo:

PESO IDADE ALTURA

65 38 16072 37 16875 35 16596 43 15870 45 17072 40 172

tabela = data.frame(Peso=c(65,72,75,96,70,72),

Idade=c(38,37,35,43,45,40),

Altura=c(1.60, 1.68, 1.65, 1.58,1.70,1.72))

> sapply(tabela, sum)

Peso Idade Altura

450.00 238.00 9.93

39

Page 40: Da Silva_Apostila_Uma breve introducao ao R Básico com RStudio

7 LISTAS

LISTAS sao estruturas genericas e flexıveis que permitem armazenar diversos formatos em um unicoobjeto. No exemplo a seguir, o comando list “empacota” um objeto do tipo vetor, um texto e umamatriz.

> Vetor = 1:10

> Texto = "Esta eh uma mensagem"

> Matriz = matrix(1:9, ncol = 3)

> (lista <- list(Vetor = Vetor, Texto = Texto, Matriz = Matriz))

$Vetor

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

$Texto

[1] "Esta eh uma mensagem"

$Matriz

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

[1,] 1 4 7

[2,] 2 5 8

[3,] 3 6 9

Analogamente, o sımbolo do cifrao depois do objeto direciona para o elemento (sub objeto) dentro dalista.

> mat.c <- lista$Matriz

> mat.c

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

[1,] 1 4 7

[2,] 2 5 8

[3,] 3 6 9

40

Page 41: Da Silva_Apostila_Uma breve introducao ao R Básico com RStudio

8 FUNDAMENTOS DE BANCO DE DADOS

Considero aqui, Banco de Dados – BD (ou Base de Dados), para fins praticos, como sendo um conjuntode registros dispostos na forma de uma tabela, possibilitando a organizacao e producao de informacao.Irei ainda restringir tal tabela as seguites situacoes:

• Cada coluna (ou campo) da tabela deve conter informacao (variavel) do mesmo tipo;

• Cada linha deve conter os registros de um caso;

• O nome de um campo (coluna ou variavel) deve ser simples, sem espaco, acentos ou caracteresgraficos;

• Os registros devem ser codificados para equivalentes numericos, minimizando-se assim erros dedigitacao.

8.1 Instrumento de coleta de dados

Um dos principais intrumentos de colata de dados e o questionario. Utilizaremos aqui como ilustracaoum questionario (parcial), aplicado a um conjunto de idosos atendidos em um hospital, com o objetivode pesquisar o perfil e tipo de trauma nesses pacientes:

a) Do perfil

Sexo: Idade (anos):Peso (Kg): Altura (cm):IMC:

Estado Civil: ( ) Solteiro ( ) Casado ( ) Viuvo.

Escolaridade:

( ) Analfabeto ( ) Fundamental (1a a 4a) ( ) Fundamental (5a a 8a)( ) Medio ( ) Superior ( ) Pos graduado.

Situacao funcional principal: ( ) Trabalho regular ( ) Trabalho autonomo ( ) Aposentado

Renda (nr de salarios):

Reside com: ( ) sozinho ( ) esposa/companheira ( ) filhos ( ) outros

Deambula com ajuda? ( ) Sim ( ) Nao

Realiza atividades fısicas? ( ) Sim ( ) Nao

b) Do trauma

Mecanismo:

( ) Queda em casa ( ) acidente automobilıstico ( ) Atropelamento( ) Maus tratos ou agressao ( ) outros (especificar)

Encaminhado por: ( ) SIATE; ( ) SAMU; Recepcao ( ); Triagem ( ); Outros ( ) qual?

Tipo de Fratura: ( ) Nenhuma ( ) Simples ( ) Exposta ( ) Iminente ( ) Luxacao

Regiao acometida:

cranio ( ); face ( ); regiao escapular ( ); torax ( ); braco ( );mao ( ); quadril ( ); femur ( ); perna (e/ou pe) ( );

No momento do acidente utilizava oculos/lente de contato? ( ) Sim ( ) Nao

No momento do acidente utilizava aparelho auditivo? ( ) Sim ( ) Nao

41

Page 42: Da Silva_Apostila_Uma breve introducao ao R Básico com RStudio

c) Comorbidades

Derrame: ( ) Sim ( ) Nao Labirintite: ( ) Sim ( ) NaoDoencas do coracao: ( ) Sim ( ) Nao Enfisema: ( ) Sim ( ) NaoArtrite: ( ) Sim ( ) Nao Artrose:( ) Sim ( ) NaoOsteoporose: ( ) Sim ( ) Nao Obesidade: ( ) Sim ( ) NaoDepressao: ( ) Sim ( ) Nao Problemas de visao: ( ) Sim ( ) NaoProblema auditivo: ( ) Sim ( ) Nao

8.2 Codificacao dos itens do questionario

Sexo: (1) Feminino (2) Masculino

Estado Civil: (1) Solteiro (2) Casado (3) Viuvo.

Escolaridade:

(0) Analfabeto (1) Fundamental (1a a 4a) (2) Fundamental (5a a 8a)(3) Medio (4) Superior (5) Pos graduado.

Situacao funcional principal: (1) Trabalho regular (2) Trabalho autonomo (3) Aposentado

Reside com: (1) sozinho (2) esposa/companheira (3) filhos (4) outros

Deambula com ajuda? (1) Sim (0) Nao

Realiza atividades fısicas? (1) Sim (0) Nao

Mecanismo:(1) Queda em casa (2) acidente automobilıstico (3) Atropelamento(4) Maus tratos ou agressao (5) outros

Encaminhado por: (1) SIATE; (2) SAMU; Recepcao (3); Triagem (4); Outros

Tipo de Fratura: (0) Nenhuma (1) Simples (2) Exposta (3) Iminente (4) Luxacao

Regiao acometida:cranio (1) Sim (0) Nao;face (1) Sim (0) Nao;regiao escapular (1) Sim (0) Nao;torax (1) Sim (0) Nao;braco (1) Sim (0) Nao;mao (1) Sim (0) Nao; quadril (1) Sim (0) Nao;femur (1) Sim (0) Nao;perna (e/ou pe) (1) Sim (0) Nao;

No momento do acidente utilizava oculos/lente de contato? (1) Sim (0) Nao

No momento do acidente utilizava aparelho auditivo? (1) Sim (0) Nao

Comorbidades

Derrame: (1) Sim (0) NaoLabirintite: (1) Sim (0) NaoDoencas do coracao: (1) Sim (0) NaoEnfisema: (1) Sim (0) NaoArtrite: (1) Sim (0) NaoArtrose:(1) Sim (0) NaoOsteoporose: (1) Sim (0) Nao

42

Page 43: Da Silva_Apostila_Uma breve introducao ao R Básico com RStudio

Obesidade: (1) Sim (0) NaoDepressao: (1) Sim (0) NaoProblemas de visao: (1) Sim (0) NaoProblema auditivo: (1) Sim (0) Nao

8.3 Codificacao das variaveis (campos)

Sexo: SexoIdade: IdadePeso: PesoAltura: AlturaIMC: (Nao utilizar)EC: Estado CivilESC: EscolaridadeSFP: Situacao funcional principalRenda: RendaRES: Reside com ...DAMB: Deambula com ajudaATIV: Realiza atividades fısicasTRA1: Queda em casaTRA2: Acidente automobilısticoTRA3: AtropelamentoTRA4: Maus tratos ou agressaoTRA5: Outros tipos de traumaENC: EncaminhamentoTPF: Tipo de FraturaREG1: Fratura no cranioREG2: Fratura na faceREG3: Fratura na regiao escapularREG4: Fratura no toraxREG5: Fratura no bracoREG6: Fratura na maoREG7: Fratura no quadrilREG8: Fratura no femurREG9: Fratura na perna (e/ou pe)OCUL: No momento do acidente utilizava oculos/lente de contato?AUDI: No momento do acidente utilizava aparelho auditivo?MORB1: DerrameMORB2: LabirintiteMORB3: Doencas do coracaoMORB4: EnfisemaMORB5: ArtriteMORB6: ArtroseMORB7: OsteoporoseMORB8: ObesidadeMORB9: DepressaoMORB10: Problemas de visaoMORB11: Problema auditivo

43

Page 44: Da Silva_Apostila_Uma breve introducao ao R Básico com RStudio

8.4 Tabela com dados simulados

Sexo Idade Peso Altura EC ESC SFP Renda

1 Masculino 57.00 87.10 165.10 Casado 3o Grau Autonomo 4.602 Feminino 45.00 65.10 154.50 Solteiro 1o Grau Empregado 3.603 Masculino 66.00 85.30 163.30 Casado 2o Grau Empregado 3.204 Feminino 64.00 91.10 168.90 Solteiro 1o Grau Autonomo 0.105 Masculino 56.00 96.50 174.50 Casado 1o Grau Aposentado 3.806 Masculino 49.00 107.90 185.90 Casado 2o Grau Aposentado 9.407 Masculino 58.00 95.60 173.60 Casado 2o Grau Aposentado 5.208 Masculino 63.00 93.10 171.10 Casado 1o Grau Aposentado 0.109 Feminino 59.00 75.00 160.00 Solteiro 2o Grau Desempregado 2.70

10 Feminino 66.00 68.00 156.10 Casado 1o Grau Empregado 2.6011 Feminino 65.00 57.40 150.20 Solteiro 1o Grau Desempregado 5.2012 Masculino 56.00 95.40 173.40 Casado 2o Grau Desempregado 1.9013 Feminino 57.00 46.30 144.10 Casado 1o Grau Desempregado 0.1014 Feminino 69.00 68.10 156.20 Solteiro 3o Grau Desempregado 1.3015 Feminino 68.00 67.30 155.70 Casado 2o Grau Autonomo 0.0016 Masculino 64.00 84.10 162.10 Casado 2o Grau Aposentado 2.9017 Feminino 65.00 109.50 179.20 Solteiro 1o Grau Desempregado 1.8018 Feminino 45.00 67.20 155.70 Solteiro 3o Grau Autonomo 0.4019 Masculino 53.00 100.80 178.80 Casado 2o Grau Aposentado 1.6020 Masculino 58.00 98.50 176.50 Casado 2o Grau Aposentado 4.3021 Masculino 65.00 98.50 176.50 Casado 2o Grau Aposentado 0.7022 Masculino 63.00 106.90 184.90 Casado 2o Grau Aposentado 4.4023 Feminino 62.00 67.40 155.80 Casado 2o Grau Autonomo 6.2024 Masculino 69.00 98.70 176.70 Casado 2o Grau Empregado 5.7025 Masculino 52.00 97.30 175.30 Casado 2o Grau Autonomo 1.8026 Feminino 66.00 69.60 157.00 Solteiro 1o Grau Desempregado 0.8027 Masculino 52.00 78.80 156.80 Casado 2o Grau Autonomo 1.4028 Masculino 53.00 90.50 168.50 Casado 1o Grau Empregado 1.9029 Masculino 60.00 83.40 161.40 Casado 2o Grau Autonomo 1.6030 Masculino 53.00 83.50 161.50 Casado 2o Grau Aposentado 2.40

Tabela 2: Dados simulados de perfil e trauma de idosos atendidos em um hospital

44

Page 45: Da Silva_Apostila_Uma breve introducao ao R Básico com RStudio

RES DAMB ATIV TRA1 TRA2 TRA3 TRA4 TRA5

1 Esposa nao nao nao sim nao nao nao2 Sozinho nao nao sim sim nao sim nao3 Esposa nao nao nao sim nao nao sim4 Sozinho nao nao sim sim nao sim nao5 Esposa nao nao nao sim nao nao nao6 Esposa nao nao nao sim nao nao nao7 Esposa sim sim sim nao sim sim sim8 Esposa nao nao nao sim nao nao nao9 Sozinho nao nao sim sim nao sim nao

10 Marido nao nao sim sim nao sim nao11 Outros sim sim nao nao sim nao nao12 Esposa nao nao nao sim nao nao nao13 Marido sim sim sim sim nao sim nao14 Outros nao nao sim sim nao nao nao15 Marido nao nao nao nao sim nao nao16 Esposa nao nao nao sim nao nao nao17 Sozinho nao nao nao nao sim nao sim18 Sozinho nao nao sim nao sim nao sim19 Esposa sim sim sim nao sim sim nao20 Esposa nao nao nao sim nao nao sim21 Esposa sim sim sim nao sim sim sim22 Esposa nao nao nao sim nao nao nao23 Marido sim sim sim nao sim nao nao24 Esposa nao nao nao sim nao nao sim25 Esposa nao nao nao sim nao nao nao26 Sozinho nao nao sim sim nao nao nao27 Esposa nao nao nao sim nao nao nao28 Esposa nao nao nao sim nao nao nao29 Esposa nao nao nao sim nao nao nao30 Esposa sim sim sim nao sim sim nao

Tabela 3: Dados simulados de perfil e trauma de idosos atendidos em um hospital (cont.)

45

Page 46: Da Silva_Apostila_Uma breve introducao ao R Básico com RStudio

ENC TPF REG1 REG2 REG3 REG4 REG5 REG6

1 SIATE Simples nao nao nao sim sim nao2 SIATE Simples nao nao nao nao nao sim3 SAMU Nenhuma nao sim sim nao nao nao4 Outros Simples nao nao sim nao nao nao5 Recepcao Nenhuma nao nao nao sim nao nao6 SIATE Exposta nao nao sim nao nao nao7 SIATE Iminente nao nao nao sim nao nao8 SAMU Simples nao nao sim nao nao sim9 SIATE Luxacao nao nao nao nao nao nao

10 SAMU Exposta sim nao nao nao nao nao11 SIATE Simples sim nao nao nao nao sim12 SAMU Simples nao sim nao nao nao sim13 SIATE Simples nao nao nao sim nao nao14 SAMU Simples nao nao nao nao nao sim15 SAMU Simples nao nao sim sim sim nao16 SIATE Simples nao sim nao sim nao nao17 Triagem Exposta nao nao sim nao nao nao18 SAMU Simples sim nao nao sim nao nao19 Recepcao Exposta sim nao nao nao nao nao20 SIATE Nenhuma nao nao nao nao nao nao21 SAMU Simples nao nao nao nao sim nao22 SAMU Nenhuma nao nao nao nao nao nao23 SIATE Iminente sim nao sim sim nao nao24 SIATE Simples nao nao nao nao nao sim25 SIATE Nenhuma nao sim nao nao nao nao26 Recepcao Luxacao nao nao nao nao nao sim27 SIATE Exposta nao sim sim sim nao nao28 SIATE Simples nao nao nao nao nao nao29 SIATE Simples nao sim nao sim nao nao30 SIATE Iminente nao nao nao nao nao nao

Tabela 4: Dados simulados de perfil e trauma de idosos atendidos em um hospital (cont.)

46

Page 47: Da Silva_Apostila_Uma breve introducao ao R Básico com RStudio

REG7 REG8 REG9 OCUL AUDI MORB1 MORB2 MORB3

1 nao nao nao nao nao sim nao nao2 nao nao sim sim nao sim nao nao3 nao nao sim sim nao nao nao nao4 sim nao sim sim nao nao nao nao5 nao nao nao nao nao nao nao sim6 nao sim nao nao nao nao nao nao7 sim nao nao nao nao sim nao nao8 nao nao nao nao nao nao nao sim9 nao nao sim sim sim nao nao nao

10 nao nao nao nao nao nao nao nao11 nao nao nao nao nao nao nao nao12 nao nao nao sim sim nao nao sim13 nao nao nao nao nao nao nao sim14 sim nao nao nao nao nao nao nao15 nao nao sim nao nao sim nao nao16 nao sim sim sim nao nao nao nao17 nao nao sim nao nao nao nao nao18 nao nao sim sim nao nao nao nao19 sim nao nao nao nao nao nao sim20 nao sim nao sim nao sim nao nao21 nao nao nao nao nao nao nao nao22 nao sim sim sim nao nao nao nao23 nao nao sim nao nao nao nao nao24 sim sim sim nao nao nao nao nao25 nao sim sim nao sim sim nao nao26 sim sim nao sim nao nao nao nao27 nao nao nao nao nao nao nao nao28 nao nao nao nao nao nao nao sim29 sim sim sim sim nao nao nao nao30 nao nao nao nao nao nao sim sim

Tabela 5: Dados simulados de perfil e trauma de idosos atendidos em um hospital (cont.)

47

Page 48: Da Silva_Apostila_Uma breve introducao ao R Básico com RStudio

MORB4 MORB5 MORB6 MORB7 MORB8 MORB9 MORB10 MORB11

1 sim nao sim sim nao nao sim nao2 nao nao nao nao nao nao sim nao3 nao nao nao nao nao nao nao nao4 nao sim sim nao sim nao sim nao5 nao nao sim nao nao sim nao sim6 sim nao nao nao sim nao sim nao7 nao nao nao sim nao sim sim sim8 sim nao nao nao sim sim nao nao9 nao nao nao nao sim sim sim nao

10 nao nao nao nao nao sim nao nao11 nao nao nao nao sim sim nao nao12 nao sim nao nao nao nao sim sim13 nao nao nao nao sim nao sim nao14 nao nao nao sim nao nao sim sim15 nao nao nao nao nao nao sim sim16 nao nao nao nao nao nao sim nao17 nao sim nao sim sim nao sim sim18 sim nao nao nao nao sim nao sim19 nao nao nao nao sim sim sim nao20 sim nao sim nao sim nao sim nao21 nao nao nao nao sim nao sim sim22 sim nao nao nao nao nao sim nao23 nao nao nao nao sim nao sim sim24 nao nao nao nao nao nao nao sim25 nao nao nao nao nao sim sim nao26 nao nao nao nao sim sim sim sim27 nao nao nao nao nao nao nao sim28 nao nao nao nao nao nao sim nao29 sim nao nao nao nao nao sim nao30 nao nao sim nao sim sim nao nao

Tabela 6: Dados simulados de perfil e trauma de idosos atendidos em um hospital (cont.)

48