# É er(R)ando que se aprende - 1 Uma introdução a linguagem R para análise de dados - 1. Parte 1: http://bit.ly/aprendeerrando ## CÁLCULOS SIMPLES Usando a linha de comando de R podemos somar ```r > 1+1 [1] 2 ``` subtrair, ```r > 14-6 [1] 8 ``` multiplicar, ```r > 3*4 [1] 12 ``` dividir, ```r > 47/11 [1] 4.272727 ``` e realizar cálculos mais complexos como se fosse uma calculadora científica. ```r > sin(5) [1] -0.9589243 ``` Para definir um decimal no R usamos o . e não a , ```r > 2.3*2 [1] 4.6 > 2,3*2 Error: syntax error ``` Podemos também atribuir o resultado de um cálculo à uma variável ```r > 47/11-> resultado > resultado [1] 4.272727 > resultado*11 [1] 47 > resultado+42->resultado > resultado [1] 46.27273 ``` ## Nosso primeiro programa! #### Calculando a média dos números de 1 a 10 ```r mean(1:10) ``` > O operador ":" cria uma sequência de números > Dentro dos parenteses ficam os argumentos da função > O resultado é chamado vetor ## Como pedir ajuda? ```r ?mean ??mean apropos("mean") ``` ## Testanto a vetorização dos operadores ```r 1:5 + 6:10 c(1, 3, 6, 10, 15) + c(0,1,3,6,10) ``` ## Atribuição de variáveis ```r x <- 5 y <- 1:10 ?make.names ``` ## Operadores lógicos ![](https://i.imgur.com/bzMFkf1.png) ```r ! # não & # e | #ou == # "igual" > # maior < # menor >= # maior ou igual <= # menor ou igual =! # diferente TRUE FALSE ``` ## Inspecionando variáveis ```r class(c(TRUE, FALSE)) class(c(sqrt(1:10))) ``` ![](https://i.imgur.com/xUZnpVG.png) ![](https://i.imgur.com/cIcMAKF.png) ### Classes mais comuns > Numeric - Decimais > Integer - Inteiros > Complex - Complexos > Character - Vetor de caracteres > Factor - Vetor de dados categóricos ## Estrutura de dados ![](https://i.imgur.com/j1dTecR.png) # Indexacao por posicao dos elementos #### Vetores É um conjunto de dados ordenados em linha. ```r a2 <- c(10,20,30) a2 a2[3] a4 <- c("porque", "o", "gato" ,"e" ,"nosso" ,"amigo") a4 a4[3] ``` #### Matrizes É um conjunto de dados que possuem coordenadas de linha e coluna (tabela) em modo unico. ```r #matrix[linha , coluna] é para indexar matrizes d1 <- matrix(data=1:12,nrow=4,ncol=3, byrow=TRUE, dimnames = NULL) colnames(d1) <- c("col1", "col2", "col3") rownames(d1) <- c("linhaA", "linhaB", "linhaC", "linhaD") d1 d2<-matrix(c("nao", "atire", "o", "pau", "no", "gato", "porque", "o", "gato" ,"e" ,"nosso" ,"amigo"), ncol=3, nrow=4, byrow=T) d2 d2[1, 2] # me retorna o elemento de posição [1,2] d2[,3] # me retorna a coluna 3 d2[,-3] # me retorna tudo, exceto a coluna 3 d1[c(1,3),] # me retorna a linha 1 e 3 d1[c(1:3),] # me retorna as linhas 1 até a 3 d1[c(1,3),]<-0 # input de 0 na linha 1 e 3 ```` ## Array ```r # Vamos criar um array (a <- array(1:27, dimnames = list(c("um", "dois", "tres"), c("c1", "c2", "c3"), c("m1", "m2", "m3")))) ``` ## Análise de matrizes e arrays ```r dim(d1) dim(a) nrow(a);ncol(a) nrow(d1); ncol(m) lenght(d1); lenght(a) ``` ## Vetores lógicos ````r d1 > 5 d1 >= 5 d1 ==5 d2 == "gato" which(d1>5) #retorna a posição dos elementos indicados posicoes<-which(d1>5, arr.ind = T) # não me dá os valores, me dá as posições desses valores!! sensacional! ```` ## Data Frame Data frames são matrizes mais gerais onde colunas podem ser compostas por diferentes tipos de objetos (numérico, lógico, categórico) ````r dados<-data.frame(d1, d2) dados dados[,3] dados[,5] #falar sobre ordem alfabética imposta no R. dados[3,6] #DATA FRAME: INDEXAÇÃO PELOS COMPONENTES #indexacao por nome das variaveis (apenas colunas) dados$X3 dados$X3[3] ```` #### As respostas "TRUE" do teste lógico assumem o valor 1 e podem ser quantificados e as respostas "FALSE" assumem o valor 0. ````r c2<-seq(1,200, by=4) c2 c2 > 60 sum(c2 > 60) sum(c2 < 60) is.na(c2) !is.na(d1) d1[d1 == 2]<-NA sum(d1[!is.na(d1) == T]) ```` # Trabalhando com um data.frame do próprio R ````r randu sum(randu$x > 0.5) dados1<-randu[,] colnames(dados1)<-c("largura", "altura", "comprimento") dados1$largura > 0.5 mean(dados1$largura[dados1$largura > 0.5]) ```` # Qual a posicao dos valores da coluna "largura" que sao maiores do que 0.5? ````r which(dados1$largura > 0.5) ```` # Quantos valores são maiores do que 0.5? ````r length(which(dados1$largura > 0.5)) dados1[which(dados1$largura > 0.5),] # exibe quais dados da coluna largura (dados1$largura>0,5) sao maiores que 0,5 e de todas as linhas. dados1[which(dados1$largura >0.1 & dados1$altura < 0.7),] #quais dados sao assim dados1[-which(dados1$largura >0.1 & dados1$altura < 0.7),] # quais dados (-) os que são assim, nessa condição. ```` ### Listas: São objetos que podem armazenar objetos de dados de tipos diferentes. É possível incluir data.frames, arrays, matrizes, vetores, fatores e mesmo listas em uma lista. ```r generos <- factor(c("Masculino", "Feminino", "Indefinido")) #Fator com gêneros vetorValores <- 1:12 #Dados head(x = mtcars, n = 10) # Carrega as 10 primeiras linhas do data.frame mtcars (carros) da base do R (vem na instalação do R) , se colocar tail() carrega as 10 últimas ``` ## Cria lista com os objetos ```r lista <- list(vetorValores, generos, head(x = mtcars, n = 10)) lista ``` ## Acessando os dados ```r #Acessa o segundo carro (base mtcars) lista[[3]][2,] ``` ### Exercício 1 - Substituir d1[,2] por d2[,3] ## d1, d2 são objetos da aula ### Exercício 2 - Criar um data frame com d1 e d2 e então substituir a terceira linha do data frame pela quarta linha de d2 Obrigado!!