Introdução ao R - Parte II

Oficina de Introdução ao R

Invalid Date

Conceitos iniciais de programação

Scripts

  • Podemos salvar nossos scripts para utilizar depois!

  • Considere tudo no console como temporário, pois não salvamos o conteúdo.

  • Escreva no Script/Editor os códigos importantes para a análise.

R como uma calculadora

  • Podemos usar o R como uma calculadora:
1 / 200 * 30
[1] 0.15
(59 + 73 + 2) / 3
[1] 44.66667
sin(pi / 2) # seno da divisao de pi por 2
[1] 1
10 %/% 3 # parte inteira da divisao por 3
[1] 3
10 %% 3 # resto da divisao por 3
[1] 1

Executando códigos

  • O atalho Cmd/Ctrl + Enter é um dos mais úteis! Executa o código selecionado, ou o trecho de código onde o cursor está.

  • O atalho Cmd/Ctrl + Shift + S executa todos os códigos do script!

Criando objetos

  • Podemos criar objetos (e guardar resultados) usando o operador de atribuição <-, e a estrutura a seguir:
nome_do_objeto <- valor

Exemplo:

x <- 3 * 4

Podemos ver o conteúdo do objeto escrevendo o nome e executando:

x
[1] 12

Boas práticas e objetos

  • Atalho Alt - (Alt e menos) serve para escrever o sinal de atribuição mais rápido.

  • O sinal = também funciona neste caso: porém como boa prática de escrita de código nós não usamos

  • Aproveite para usar a tecla Tab no RStudio: ajuda a autocompletar!

  • O R é case sensitive:

r_rocks <- 2 ^ 3
r_rock
#> Error: object 'r_rock' not found
R_rocks
#> Error: object 'R_rocks' not found
r_rocks
#> [1] 8

Boas práticas e objetos

  • Erros de digitação e de maiúscula/minúscula importam!

  • Cuidado ao dar nomes aos objetos:

eu_uso_snake_case
outrasPessoasUsamCamelCase
algumas.pessoas.usam.pontos
E_Algumas.Pessoas_RENUNCIAMconvenções

Entendendo melhor um objeto

Um objeto é onde nossos dados são armazenados dentro do R.

Um objeto sempre tem uma classe e um tipo

Geralmente chamamos de “valor” tudo o que está dentro de um objeto, PORÉM:

  • Valores não precisam ser números.
  • Eles podem ser texto, por exemplo.
pessoa <- "Bruna"
pessoa 
[1] "Bruna"

As classes dos objetos

  • Os objetos podem conter dados de diferentes naturezas (um texto, um número, um booleano). É o quê estamos armazenando.
CLASSE SINÔNIMO
character texto, string, caractere
integer números inteiros
numeric números racionais (número representado por uma fração
complex números complexos (raramente usado)
logic lógico, booleano, valor TRUE/FALSE
factor variáveis categóricas

Exemplos de classes

nome <- 'Rladies' # texto
nome
[1] "Rladies"
idade <- '40' # texto
idade
[1] "40"
idade2 <- 40L # numero inteiro
idade2
[1] 40
passagem <- 4.40 # numero decimal
passagem
[1] 4.4

Exemplos de classes

corrente <- 3 + 2i # numero complexo
corrente
[1] 3+2i
sou_linda <- TRUE # booleano
sou_linda
[1] TRUE
escolaridade <- c("Médio", "Superior", "Fundamental", "Fundamental", "Médio")
fator <- as.factor(escolaridade) # cria objt do tipo factor
fator # na linha levels temos os rótulos dos fatores
[1] Médio       Superior    Fundamental Fundamental Médio      
Levels: Fundamental Médio Superior

Exemplos de classes

DICA: a função class() mostra a classe de um objeto

nome <- 'R-ladies SP'
class(nome)
[1] "character"
passagem <- 4.40
class(passagem)
[1] "numeric"
nivel <- as.factor(c('baixo', 'médio', 'alto'))
class(nivel)
[1] "factor"

Os tipos de objetos

É como armazenamos os dados dentro do R

Vector: armazena elementos de mesma classe

Matrix: vetores de duas dimensões que armazenam elementos de mesma classe.

List: tipo especial de vetor que aceita elementos de classes diferentes.

Data.frame: são tabelas de dados com linhas e colunas, como uma tabela do Excel. Como são listas, essas colunas podem ser de classes diferentes.

NA

Uma característica importante do R que pode dicultar a comparação são os valores ausentes ou NAs (não disponíveis).

NA > 10
[1] NA
NA == NA
[1] NA

is.na() é a função que testa se um objeto é NA

Estrutura condicional: IF e ELSE

mes <- "Dezembro"

if(mes == "Dezembro") {
 print("O Natal chegou!") # mostra essa mensagem.
} else {
 print("O ano ainda não acabou!") # mostra essa mensagem.
}
[1] "O Natal chegou!"

Estrutura de repetição: FOR

Com o laço for podemos executar a mesma ação em todos os elementos de uma lista. Essa é uma das maneiras mais comuns para um computador automatizar tarefas repetitivas.

personagens <- c('Luke Skywalker', 'C-3PO', 'R2-D2', 'Darth Vader', 'Leia Organa') # vetor de strings

for(i in seq_along(personagens)) {
 print(personagens[i])
}
[1] "Luke Skywalker"
[1] "C-3PO"
[1] "R2-D2"
[1] "Darth Vader"
[1] "Leia Organa"

Operadores relacionais

Operador Descrição
== igual
!= diferente
> maior
< menor
>= maior ou igual a
<= menor ou igual que

Operadores lógicos

Operador Descrição
! significa NÃO
& significa E
| significa OU
%in% significa “contém”

O operador pipe: %>% ou |>

(pense nele como uma vírgula!)

  • pipe = cano, encanamento, fazer a informação fluir

  • o valor do lado esquerdo do pipe vira argumento para a função do lado direito e assim por diante

    df <- iris |> 
      dplyr::select(Sepal.Length, Sepal.Width) |>
      dplyr::filter(Sepal.Length > 7.6) |>
      dplyr::arrange(desc(Sepal.Length))
  • Atalho: CTRL + SHIFT + M

O que é uma função?

  • Função: uma palavra que, no código, dá um comando ao computador.
  • Ela é escrita seguida de parênteses.
  • Nos parênteses incluímos os atributos (inputs).
  • O output vai ser a informação que o computador retorna após rodar a função.

(pense nela como um verbo!)

Função no R

altura_carol <- 1.54
altura_lucas <- 1.89
altura_media <- mean(c(altura_carol, altura_lucas))
altura_media
[1] 1.715


  • mean = função para calcular a média
  • argumentos = informações que vão entre parênteses para indicar o que a função deve fazer
  • c() = para criar um vetor (uma lista com mais de um item a ser aplicado no cálculo)

Utilizando funções

  • O R possui muitas funções disponíveis

  • Estrutura para utilizar uma função:

nome_da_funcao(nome_do_argumento_1 = valor_para_o_argumento1,
               nome_do_argumento_2 = valor_para_o_argumento2,
               nome_do_argumento_3 = valor_para_o_argumento3,
               ...)

Exemplo:

seq(from = 1, to = 10)
 [1]  1  2  3  4  5  6  7  8  9 10
  • Parênteses (e aspas) sempre devem estar em “duplas”: se abrirmos, temos que fechar.

O que é um pacote de R?

  • Conjunto de funções úteis pra determinada análise.

  • Eles são disponibilizados em repositórios. Os dois principais repositórios são o CRAN e o GitHub.

  • Os pacotes são instalados apenas uma vez e devem ser carregados sempre que queremos utilizá-los.

Instalar e carregar pacotes

  • Para instalar um pacote que está no CRAN, usamos a função install.packages:
install.packages("tidyverse")
  • Caso o pacote esteja no GitHub, é possível fazer a instalação via função install_github do pacote devtools:
install.packages("devtools")

devtools::install_github('rfsaldanha/microdatasus')
  • Para carregar o pacote usamos a função library:
library(tidyverse)
library(microdatasus)

Boas práticas (resumo)

Nome de variáveis:

  1. Não usar maiúscula, espaços ou acentos pra criar o nome
  2. Não começar o nome com um número
  3. Escolher nomes úteis e não redundantes

Código e comentários:

  1. Inserir espaços só após as vírgulas e parênteses
  2. Evite comentar demais e de menos (com a hashtag #)
  3. Use a quebra de linha para facilitar a leitura

Erros mais comuns!

  • Rodar uma linha de código sem ter rodado as anteriores, que fazem parte de uma “sequência” de comandos para o programa

  • Pequenos erros de digitação ao escrever o código

  • Não selecionar o trecho inteiro de código na hora de rodar

  • Dica: o pacote tidylog te dá um relatório de tudo o que ele fez, e ajuda a encontrar a origem dos erros