Profa. Suzi [email protected] euler.mat.ufrgs.br/~camey

23
R Profa. Suzi [email protected] http://euler.mat.ufrgs.br/ ~camey/

description

R. Profa. Suzi [email protected] http://euler.mat.ufrgs.br/~camey/. Rweb. http://www.math.montana.edu/Rweb/. Aula 17/05/07 Maiores detalhes: http://leg.ufpr.br/~paulojus/embrapa/Rembrapa/. Aritmética e Objetos Operações aritméticas Valores faltantes e especiais Objetos Tipos de objetos - PowerPoint PPT Presentation

Transcript of Profa. Suzi [email protected] euler.mat.ufrgs.br/~camey

Page 1: Profa. Suzi camey@mat.ufrgs.br euler.mat.ufrgs.br/~camey

R

Profa. Suzi

[email protected]

http://euler.mat.ufrgs.br/~camey/

Page 2: Profa. Suzi camey@mat.ufrgs.br euler.mat.ufrgs.br/~camey

Rweb

http://www.math.montana.edu/Rweb/

Page 3: Profa. Suzi camey@mat.ufrgs.br euler.mat.ufrgs.br/~camey

Aula 17/05/07Maiores detalhes: http://leg.ufpr.br/~paulojus/embrapa/Rembrapa/

Aritmética e Objetos Operações aritméticas Valores faltantes e especiais Objetos

Tipos de objetos Vetores Matrizes Arrays Data-frames Listas

Exercícios

Page 4: Profa. Suzi camey@mat.ufrgs.br euler.mat.ufrgs.br/~camey

Aritmética e Objetos

Operações aritméticas

>help(Arithmetic)

sqrt raiz quadrada

abs valor absoluto (positivo)

sin cos tan funções trigonométricas

asin acos atan funções trigonométricas inversas

sinh cosh tanh funções hiperbólicas

asinh acosh atanh funções hiperbólicas inversas

exp log exponencial e logaritmo natural

log10 logaritmo base-10

Page 5: Profa. Suzi camey@mat.ufrgs.br euler.mat.ufrgs.br/~camey

Aritmética e Objetos

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 ; -Inf: mais ou menos infinito. exp(1): e pi:

Page 6: Profa. Suzi camey@mat.ufrgs.br euler.mat.ufrgs.br/~camey

Aritmética e Objetos

Objetos O R é uma linguagem orientada à

objetos: variáveis, dados, matrizes, funções, etc são armazenados na memória ativa do computador na forma de objetos.

>ls(): lista os objetos guardados na memória ativa

Page 7: Profa. Suzi camey@mat.ufrgs.br euler.mat.ufrgs.br/~camey

Aritmética e Objetos

Como atribuir valores aos objetos:

> x <- 25

> x * sqrt(x) -> x1

> x2.1 = sin(x1)

Page 8: Profa. Suzi camey@mat.ufrgs.br euler.mat.ufrgs.br/~camey

Aritmética e Objetos

Como NÃO atribuir valores aos objetos:

> 99a <- 10: nome do objeto deve começar com letra.

> a1 <- sqrt 10: sqrt é uma função portanto exige ( ).

> a-1 <- 99: não aceita hífen.

> sqrt(x) <- 10: não faz sentido

Page 9: Profa. Suzi camey@mat.ufrgs.br euler.mat.ufrgs.br/~camey

Aritmética e Objetos

Exemplos de nomes de objetos a serem evitados: c q  s  t  C  D  F  I  T   diff  exp  log  mean  pi  range  rank  var

Exemplos de nomes reservados:

FALSE  Inf  NA  NaN  NULL TRUE         break  else  for  function  if  in  nextrepeat  while

Page 10: Profa. Suzi camey@mat.ufrgs.br euler.mat.ufrgs.br/~camey

Tipos de objetos: Vetores

  função c() ("c" de concaternar) é usada para

criar um vetor Ex.: x<-c(2,3,52,9)

Os colchetes [ ] são usados para indicar seleção de elementos. Ex.: x[2]

Page 11: Profa. Suzi camey@mat.ufrgs.br euler.mat.ufrgs.br/~camey

Tipos de objetos: Vetores As funções rep(), seq() e o símbolo ":" são usadas para

facilitar a criação de vetores que tenham alguma lei de formação.   :

Ex.: xx <- 100:1 >help(rep)

Ex.: > rep(1:4, each = 12) > rep(1:4, rep(12, 4)) > rep(rep(1:3, each = 4), 4) > rep(1:4, 12)

>help(seq) Ex.: >seq(1,10,1) 

>seq(1,10,2) > seq(10,1,3) > seq(10,1,-3)

Page 12: Profa. Suzi camey@mat.ufrgs.br euler.mat.ufrgs.br/~camey

Tipos de objetos: Vetores Operações com vetores> x <- 1:10 > x + 2 > x * 2 > sqrt(x) > y <- 21:30 >  x+y  [1] 22 24 26 28 30 32 34 36 38 40 > z <- c(1,2) > x+z > w <- c(1,2,1) > x + w

Page 13: Profa. Suzi camey@mat.ufrgs.br euler.mat.ufrgs.br/~camey

Tipos de objetos: Vetores Caracteres e Fatores

Caracteres> c1 <- "Hello" > c2 <- c("Yes",'Maybe',"No") > c3 <- rep("Monkey",4) > c4 <- rep(c("Monkey","Bucket"),3)

Fatores> c5 <- c('M','F','F','F','M','M') > f5 <- as.factor(c5) > levels(f5) > levels(f5) <- c("Female","Male") > alt <- c(175, 184, 180, 182, 176, 174, 169) > sexo <- as.factor(rep(0:1, c(4,3))) > levels(sexo) <- c("homem", "mulher") > table(sexo) > mean(alt) [1] 177.1429 > by(alt, sexo, mean) > ave(alt, sex)

Page 14: Profa. Suzi camey@mat.ufrgs.br euler.mat.ufrgs.br/~camey

Tipos de objetos: Vetores

Valores Lógicos gt5 <- x > 5

Operadores Lógicos> x > 2 & x < 7 x < 2 | x >7

"TRUE" e "FALSE" como números...> y <- x > 3 > y*2  > sum(y)

Page 15: Profa. Suzi camey@mat.ufrgs.br euler.mat.ufrgs.br/~camey

Tipos de objetos: Vetores

Índices> y <- x[2] > y <- x[c(1,3,5)] > x[4:7] > x[12]

Índices Negativos> x[-3] > x[c(3,4,7)]> x[-c(3,4,7)] > x[-length(x)] > x[length(x):1]

Índices Lógicos> x <- c(6,5,6,4,4,3,4,2,3,4) > y <- c(5,3,4,2,6,5,4,5,4,3) > xeq4 <- x == 4> y[xeq4] > y[x == 4] > x[x > 5] > x <- c(3, 5, 3, 2, 5, 7, 5) > y <- c(23, 21, 20, 12, 20, 30, 29) > x == 5 > y[x == 5]

Page 16: Profa. Suzi camey@mat.ufrgs.br euler.mat.ufrgs.br/~camey

Tipos de objetos: Matrizes Criando Matrizes

> x <- 1:12 > xmat <- matrix(x,ncol=3) > matrix(x,ncol=3,byrow=T)> xmat<-matrix(0,2,3)> x <- matrix(10:1,ncol=2) > y <- cbind(x,1:5) > y <- rbind(y,c(99,99,99)) > z <- cbind(y,rep(88,6),y)

Informações sobre a matriz> x1 <- matrix(1:12,ncol=4) > dim(x1) > summary(x1) > summary(as.vector(x1))

Page 17: Profa. Suzi camey@mat.ufrgs.br euler.mat.ufrgs.br/~camey

Tipos de objetos: Matrizes

Operações com matrizes Mesmas operações dos vetores

> x1 <- matrix(1:6,ncol=2)  > x2 <- matrix(6:1,ncol=3)  > x1 %*% x2 > t(x1)*x2

Page 18: Profa. Suzi camey@mat.ufrgs.br euler.mat.ufrgs.br/~camey

Tipos de objetos: Matrizes Índices das matrizes

> z[2,5] > z[,4] > z[3,] > z[c(1,3,5),] > z[,5:7] > z[c(2,3),c(4,6)]

Voce pode querer selecionar as pessoas (linhas) que atendem a um certo critério (idade, sexo, etc). Vamos definir uma matrix onde as colunas armazenam: índices 1 a 5, idade e sexo (codificado com 0/1) de cinco pessoas. > people <- cbind(c(1,2,3,4,5),c(43,55,52,23,46),c(1,1,0,1,1)) > oldies <- people[people[,2]>50,] > people[,2] > people[,2]>50 > people[people[,2]>50 , ]

Page 19: Profa. Suzi camey@mat.ufrgs.br euler.mat.ufrgs.br/~camey

Tipos de objetos: Arrays

> ar1<-array(1:24,dim=c(3,4,2)) > ar1[,2:3,] > ar1[2,,1] > sum(ar1[,,1]) > sum(ar1[1:2,,1]) > dimnames(ar1) > dimnames(ar1)<-list(c("Baixo","Médio","Alto"),paste("col",+1:4,sep=""),c("Masculino","Feminino"))

Page 20: Profa. Suzi camey@mat.ufrgs.br euler.mat.ufrgs.br/~camey

Tipos de objetos: Arrays Veja agora um exemplo de dados já incluído no R no formato de array.

> data(Titanic) > Titanic > help(Titanic)

Quantas pessoas havia no total? > sum(Titanic)

Quantas pessoas havia na tripulação (crew)?> sum(Titanic[4, , , ])

Quantas pessoas sobreviveram e quantas morreram?> apply(Titanic, 4, sum)

Quantas crianças sobreviveram?> sum(Titanic[, , 1, 2])

Quais as proporções de sobreviventes entre homens e mulheres?> apply(Titanic, 2, sum) > apply(Titanic[, , , 2], 2, sum) > 100 * apply(Titanic[, , , 2], 2, sum)/apply(Titanic, 2, sum)

Page 21: Profa. Suzi camey@mat.ufrgs.br euler.mat.ufrgs.br/~camey

Tipos de objetos: Data-frames

Vetores, matrizes e arrays forçam todos os elementos a serem do mesmo "tipo"i.e., ou numérico ou caracter. O "data-frame"é uma estrutura semelhante à uma matriz porém com cada coluna sendo tratada separadamente.

> d1 <- data.frame(X = 1:10, Y = c(51, 54, 61, 67, 68, 75, 77, 75, 80, 82))> names(d1) > d1$X > d1$Y > plot(d1)> plot(d1$X, d1$Y) > d3 <- expand.grid(1:3,4:5) > d4 <- data.frame(X = letters[1:10], Y = c(51, 54, 61, 67, 68, 75, 77, 75,

  +     80, 82))

Page 22: Profa. Suzi camey@mat.ufrgs.br euler.mat.ufrgs.br/~camey

Tipos de objetos: Listas

Listas são estruturas genéricas e flexíveis que permitem armazenar diversos formatos em um único objeto.

  > lis1 <- list(A = 1:10, B = "THIS IS A MESSAGE", C = matrix(1:9, ncol = 3))

Uma lista é portanto uma coleção de objetos. Para listas há duas opções para se selecionar elementos: colchetes [ ] ou colchetes duplos [[ ]]. Entretanto os resultados retornados por cada um destes é diferente.

  > lis1 <- list(nomes = c("Pedro", "Joao", "Maria"), mat = matrix(1:6,nc = 2))  > lis1[1]   > lis1[2]   > lis1[[2]]

Page 23: Profa. Suzi camey@mat.ufrgs.br euler.mat.ufrgs.br/~camey

Exercícios

http://leg.ufpr.br/~paulojus/embrapa/Rembrapa/Rembrapase6.html#x7-310006.8