# Rodando códigos (o R como calculadora) ---------------------------------- # podemos fazer anotações, e explições sobre o nosso código # ATALHO para rodar o código: CTRL + ENTER # adição 1 + 1 # subtração 4 - 2 # multiplicação 2 * 3 # divisão 5 / 3 # potência 4 ^ 2 # Objetos ----------------------------------------------------------------- # As bases de dados serão o nosso objeto de trabalho mtcars # O objeto mtcars já vem com a instalação do R # Ele está sempre disponível # Outros exemplos pi letters LETTERS # Na prática, vamos precisar trazer nossas bases # para dentro do R. Como faremos isso? # Funções ----------------------------------------------------------------- # Funções são nomes que guardam um código de R. Esse código é # avaliado quando rodamos uma função. nrow(mtcars) # mtcars é um argumento neste caso! ncol(mtcars) # exemplo de funcao com 2 argumentos round(1.76432, 1) # arredondando ceiling(1.76432) # arredonda para o numero inteiro acima floor(1.76432) # arredonda para o numero inteiro para baixo # Podemos usar a função help para ver # a documentação de um objeto ou função help(mtcars) help(nrow) # Uma função muito útil para data frames é a View View(mtcars) # Uma função pode ter mais de um argumento # Argumentos são sempre separados por vírgulas sum(1, 2) sum(2, 3, 4) # Existem funções para ler bases de dados read.csv("dados/imdb.csv") # é melhor fazer assim! # mas também é possível buscar em outras pastas # e também na internet: read.csv("~/Downloads/imdb.csv") #https://github.com/curso-r/main-r4ds-1/raw/master/dados/imdb.csv read.csv("https://github.com/curso-r/main-r4ds-1/raw/master/dados/imdb.csv") # Como "salvar" a base dentro do R? # Criando objetos --------------------------------------------------------- # No dia-a-dia, a gente vai precisar criar os # nossos próprios objetos # <- <- <- <- <- <- <- <- <- <- <- <- <- <- <- <- <-< <- <- <- <- # Salvando o valor 1 no objeto "obj" obj <- 1 obj # Também dizemos 'guardando as saídas' soma <- 2 + 2 soma # ATALHO para a <- : ALT - (alt menos) # Em geral, começaremos a nossa análise com: nossa_base <- funcao_que_carrega_uma_base("caminho/ate/arquivo") # O erro "could not find function" significa que # você pediu para o R avaliar uma função que # não existe. O mesmo vale para objetos: nossa_base # Dicas: # - sempre leia as mensagens de erro # - verifique no Environment se um objeto existe # No nosso caso: imdb <- read.csv("dados/imdb.csv") # salvar saída versus apenas executar 33 / 11 resultado <- 33 / 11 # atualizar um objeto # resultado <- resultado * 5 resultado_vezes_5 <- resultado * 5 # A nossa base imdb só será alterada quando salvarmos # uma operação em cima do objeto imdb na.exclude(imdb) imdb_sem_na <- na.exclude(imdb) nrow(imdb_sem_na) # Os nomes devem começar com uma letra. # Podem conter letras, números, _ e . # Permitido x <- 1 x1 <- 2 objeto <- 3 meu_objeto <- 4 meu.objeto <- 5 # Não permitido 1x <- 1 _objeto <- 2 meu-objeto <- 3 # - é usado para fazer subtração. # Estilo de nomes eu_uso_snake_case outrasPessoasUsamCamelCase algumas.pessoas.usam.pontos.mas.nao.deviam E_algumasPoucas.Pessoas_RENUNCIAMconvenções # checkpoint -------------------------------------------------------------- # 1. Escrevam (não copiem e colem) o código que lê a base e # a salva num objeto imdb. Rodem o código e observem # na aba environment se o objeto imdb apareceu. # tentem usar o tab entre aspas para procurar o nome do objeto! imdb <- read.csv("dados/imdb.csv") # Classes ----------------------------------------------------------------- imdb # Cada coluna da base representa uma variável # Cada variável pode ser de um tipo (classe) diferente # Podemos somar dois números 1 + 2 # Não podemos somar duas letras (texto) "a" + "b" "1" + "2" ############################## # Use aspas para criar texto # ############################## a <- 10 # O objeto a, sem aspas a # A letra (texto) a, com aspas "a" # Numéricos (numeric) a <- 10 class(a) # "numeric" # Caracteres (character, strings) obj <- "a" obj2 <- "masculino" "texto" 'texto' "blalbalba" class(obj) # "character" class(obj2) # lógicos (logical, booleanos) verdadeiro <- TRUE falso <- FALSE class(verdadeiro) # "logical" class(falso) # Data frames class(mtcars) # "data.frame" class(imdb) # Como vemos a classe de uma coluna? # Como acessar as colunas de uma base? # Vetores ----------------------------------------------------------------- # Vetores são conjuntos de valores # CRIADOS COM A FUNCAO c() - de combinar! vetor1 <- c(1, 4, 3, 10) vetor2 <- c("a", "b", "z") vetor1 vetor2 # Uma maneira fácil de criar um vetor com uma sequência de números # é utilizar o operador `:` # Vetor de 1 a 10 1:10 # Vetor de 10 a 1 10:1 # Vetor de -3 a 3 -3:3 # As colunas de data.frames são vetores mtcars$mpg imdb$titulo titulos_dos_filmes <- imdb$titulo ano_dos_filmes <- imdb$ano anos_unicos_de_filmes <- unique(ano_dos_filmes) length(anos_unicos_de_filmes) # length permite ver o tamanho do vetor! class(mtcars$mpg) class(imdb$titulo) class(imdb$ano) head(imdb) tail(imdb) imdb$titulo[1:6] # busca os valores pela posicao/ordem head(imdb$titulo) tail(imdb$titulo) # -------- FINAL DA AULA 1 -------------- # O operador $ pode ser utilizado para selecionar # uma coluna da base # Um vetor só pode guardar um tipo de objeto e ele terá sempre # a mesma classe dos objetos que guarda vetor1 <- c(1, 5, 3, -10) vetor2 <- c("a", "b", "c") class(vetor1) class(vetor2) vetor3 <- c(1, 2, 3, "a", "b","c", TRUE, FALSE) vetor3 class(vetor3) # true recebeu 1, false recebeu 0 vetor4 <- c(1, 2, 3, TRUE, FALSE) vetor4 class(vetor4) # Se tentarmos misturar duas classes, o R vai apresentar o # comportamento conhecido como coerção vetor <- c(1, 2, "a") vetor class(vetor) # character > numeric > integer > logical # coerções forçadas por você as.numeric(c(TRUE, FALSE, FALSE)) as.character(c(TRUE, FALSE, FALSE)) # as.____() # Por consquência, cada coluna de uma base # guarda valores de apenas uma classe. str(mtcars) str(imdb) # o tipo de classe sempre ficará vinculado à coluna! # nome_da_base[ linhas, colunas] imdb[ 1, ] imdb[ 1, 1] # Naturalmente, podemos fazer operações matemáticas com vetores vetor <- c(0, 5, 20, -3) vetor + 1 vetor - 1 vetor / 2 vetor * 10 # Você também pode fazer operações que envolvem mais de um vetor: vetor1 <- c(1, 2, 3) vetor2 <- c(10, 20, 30) vetor1 + vetor2 # reciclando!! vetor3 <- c(1, 2) vetor4 <- c(10, 20, 30, 40, 50, 60) vetor3 + vetor4 # reciclagem pode ser confuso! vetor5 <- c(1, 2) vetor6 <- c(10, 20, 30, 40, 50) vetor5 + vetor6 # # Warning message: # In vetor5 + vetor6 : # longer object length is not a multiple of shorter object length # o comprimento do objeto maior (vetor6) não é multiplo do comprimento # do objeto menor (vetor 5) # R BASE # Base R # Pacotes ----------------------------------------------------------------- # Para instalar pacotes # install.packages("tidyverse") library(tidyverse) library(dplyr) # Também é possível acessar as funções usando :: dplyr::filter_at() dplyr::transmute()