230 likes | 357 Views
R. Profa. Suzi camey@mat.ufrgs.br 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
E N D
R Profa. Suzi camey@mat.ufrgs.br http://euler.mat.ufrgs.br/~camey/
Rweb • http://www.math.montana.edu/Rweb/
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
Aritmética e Objetos Operações aritméticas >help(Arithmetic)
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:
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
Aritmética e Objetos Como atribuir valores aos objetos: > x <- 25 > x * sqrt(x) -> x1 > x2.1 = sin(x1)
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
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 next repeat while
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]
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)
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
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)
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)
Í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] Tipos de objetos: Vetores
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))
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
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 , ]
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"))
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)
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))
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]]
Exercícios • http://leg.ufpr.br/~paulojus/embrapa/Rembrapa/Rembrapase6.html#x7-310006.8