Objetos

A linguagem R tem sua leitura centrada em objetos, dessa forma é preciso definir inicialmente os objetos que você gostaria de trabalhar para que o software possa realizar qualquer comando/função.

#definindo um objeto

n <- 10
print(n)
## [1] 10

Comentários: O R não reconhece linhas de código iniciadas por “#”, dessa forma você pode utilizar estas linhas como comentários para auxiliar na leitura do script.

Diretório de trabalho

O diretório é importante para que o R reconheça os arquivos que estão no seu computador e possa importá-los para dentro do ambiente de trabalho. Para isso você só precisa rodar a seguinte linha de código:

setwd("G:/Meu Drive/PAE")
#lembre-se de inverter a barra de \ para / de forma que seu diretório
#possa ser lido corretamente

Dica: crie uma pasta no seu computador onde você irá trabalhar com os dados e manter seus scripts salvos é importante para que não haja nenhuma dificuldade do programa em reconhecer seus arquivos.

Objetos básicos do R

Os objetos principais que armazenam informação no R são vetores, matrizes (conjunto de vetores), arrays que armazenam dados multidimensionais, dataframes (formato tabular de armazenar informações) e listas, sendo este último um dos formatos mais flexíveis de armazenar diferentes tipos de elementos (de diferentes formatos) de forma compacta.

#construindo um vetor

vetor <- c(1:4)
vetor2 <- c("A","B","C","D")
vetor3 <- c(TRUE,FALSE,FALSE,TRUE)

#outra maneira de criar vetores

vetor4 <- seq(from = 2, to = 10, by = 2)
print(vetor4)
## [1]  2  4  6  8 10
#construindo uma matriz a partir de vetores

matriz <- matrix(c(vetor,vetor2,vetor3),
                 nrow = 4) #define o número de linhas 

print(matriz)
##      [,1] [,2] [,3]   
## [1,] "1"  "A"  "TRUE" 
## [2,] "2"  "B"  "FALSE"
## [3,] "3"  "C"  "FALSE"
## [4,] "4"  "D"  "TRUE"

A diferença entre a matriz e o array é que para dados com mais de duas dimensões (exemplo dados georrefenciados) utilizamos o armazenamento do tipo array.

#construindo um array a partir de vetores

ar_ray <- array(c(vetor,vetor2,vetor3),
                 dim = c(4,3,2)) #define as dimensões linha,coluna e camada 
#construindo um dataframe a partir de uma matriz

data <- as.data.frame(matriz)
print(data)
##   V1 V2    V3
## 1  1  A  TRUE
## 2  2  B FALSE
## 3  3  C FALSE
## 4  4  D  TRUE
#construindo uma lista com todos os elementos anteriores

lista <- list(vetor = vetor2,tabela = data, matriz = matriz)

print(lista)
## $vetor
## [1] "A" "B" "C" "D"
## 
## $tabela
##   V1 V2    V3
## 1  1  A  TRUE
## 2  2  B FALSE
## 3  3  C FALSE
## 4  4  D  TRUE
## 
## $matriz
##      [,1] [,2] [,3]   
## [1,] "1"  "A"  "TRUE" 
## [2,] "2"  "B"  "FALSE"
## [3,] "3"  "C"  "FALSE"
## [4,] "4"  "D"  "TRUE"

Operações básicas

Agora, vamos olhar algumas das funções básicas:

x <- 10
y <- 5

#soma

x + y
## [1] 15
#divisão

x/y
## [1] 2
#multiplicação

x*y
## [1] 50
vetor*2
## [1] 2 4 6 8
#multiplicar matrizes

matr1 <- matrix(c(1:4), nrow = 2)
matr2 <- matrix(c(5:8), nrow = 2)

matr1 %*% matr2
##      [,1] [,2]
## [1,]   23   31
## [2,]   34   46

Operadores lógicos

Para realizar operações lógicas no r (pensando que futuramente isto será utilizado em funções mais “complexas” como ifelse, filter,etc.) temos as seguintes operações básicas:

  1. x == y (x é igual a y)
  2. x != y (x é diferente de y)
  3. x > y (x é maior do que y)
  4. x >= y (x é maior ou igual a y)

Funções

As funções executam as “ordens” que pedimos para o software executar sobre os nossos objetos. Entretanto, estas possuem argumentos, isto é, existe uma ordem e tipo de inputs que devem ser colocados ao se chamar uma função para que o output desejado (objetivo de se usar a função) seja entregue.

Exemplo:

mean(vetor) #retorna a média dos valores do vetor; possui apenas um argumento que é o próprio objeto
## [1] 2.5
library(dplyr)
## 
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
idade <- c(1:80)

idade <- as.data.frame(idade)

idade_minima <- 18

cnh <- filter(idade, idade >= idade_minima) #cnh retorna um dataframe apenas com a idade elegível 

Pacotes

Os pacotes são conjuntos de funções que devem ser baixados (e chamados quando forem ser utilizados) por terem sidos desenvolvidos para além das funções do R base.

Exemplo:

#install.packages("tidyverse")

library(tidyverse)
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ forcats   1.0.0     ✔ readr     2.1.4
## ✔ ggplot2   3.4.4     ✔ stringr   1.5.1
## ✔ lubridate 1.9.3     ✔ tibble    3.2.1
## ✔ purrr     1.0.2     ✔ tidyr     1.3.0
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag()    masks stats::lag()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors

O pacote tidyverse (https://www.tidyverse.org/packages/) é um dos mais utilizados para análise de dados, pois dentro dele reúne várias funções que são utilizadas para manipulação e visualização de dados.

Abrindo um banco de dados

Para abrir um banco de dados no R é importante que você tenha especificado seu diretório de trabalho e saiba qual o formado do seu arquivo para que o software faça a leitura e importação correta dos dados:

# rm(list = ls()) #remove objetos da memória do R

#abrindo o banco
pnad <- read_csv("pnad_22_ajust.csv") %>% 
  select(-c(1:3)) #select exclui as 3 primeiras colunas que não me interessam
## New names:
## Rows: 155539 Columns: 12
## ── Column specification
## ──────────────────────────────────────────────────────── Delimiter: "," chr
## (4): uf, zona, sexo, cor dbl (8): ...1, ...2, ...3, ano, trim, idade,
## escolaridade, salario
## ℹ Use `spec()` to retrieve the full column specification for this data. ℹ
## Specify the column types or set `show_col_types = FALSE` to quiet this message.
## • `` -> `...1`
## • `...1` -> `...2`
## • `...2` -> `...3`
glimpse(pnad) #esta função me permite compreender em que formato que as informações dentro do meu data frame foram importadas
## Rows: 155,539
## Columns: 9
## $ ano          <dbl> 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 202…
## $ trim         <dbl> 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, …
## $ uf           <chr> "Rondônia", "Rondônia", "Rondônia", "Rondônia", "Rondônia…
## $ zona         <chr> "Urbana", "Urbana", "Urbana", "Urbana", "Urbana", "Urbana…
## $ sexo         <chr> "Mulher", "Homem", "Homem", "Homem", "Homem", "Mulher", "…
## $ idade        <dbl> 38, 42, 20, 26, 19, 47, 60, 46, 46, 37, 19, 39, 57, 20, 4…
## $ cor          <chr> "Pretos ou Pardos", "Pretos ou Pardos", "Pretos ou Pardos…
## $ escolaridade <dbl> 12, 6, 11, 10, 9, 0, 1, 9, 16, 16, 12, 16, 12, 11, 11, 12…
## $ salario      <dbl> 1212, 1212, 1212, 1212, 1212, 1400, 1500, 2500, 3200, 220…
#ajustando categoria binária

pnad$sexo <- as.factor(pnad$sexo)
pnad$cor <- as.factor(pnad$cor)

Veja que no código anterior me refiro às informações contidas dentro do meu data frame como “dataframe$nome_do_objeto” pois só assim o R consegue ler as informações especificas da variável que você está se referindo dentro do seu banco.

Outra possibilidade é o uso da expressão ” %>% ” (pipe) utilizada na primeira linha do código, para referenciar uma ação (select) dentro do data frame (remover as três primeiras colunas).

Linhas e colunas do data frame

Quando queremos referenciar não uma variável do nosso data frama mas sim a coluna ou linha específica utilizamos a seguinte estrutura: data[row,col]

n <- pnad[3:10,5:8] #seleciono primeiro as linhas e depois as colunas do meu novo data frame
n
## # A tibble: 8 × 4
##   sexo   idade cor              escolaridade
##   <fct>  <dbl> <fct>                   <dbl>
## 1 Homem     20 Pretos ou Pardos           11
## 2 Homem     26 Pretos ou Pardos           10
## 3 Homem     19 Pretos ou Pardos            9
## 4 Mulher    47 Branca                      0
## 5 Homem     60 Pretos ou Pardos            1
## 6 Homem     46 Pretos ou Pardos            9
## 7 Mulher    46 Branca                     16
## 8 Homem     37 Pretos ou Pardos           16
colnames(pnad) # me retorna o nome das variáveis
## [1] "ano"          "trim"         "uf"           "zona"         "sexo"        
## [6] "idade"        "cor"          "escolaridade" "salario"

Manipulação de dados

Para finalizar essa nossa breve introdução dos principais tópicos que iremos utilizar como base para as próximas aulas, vamos falar sobre duas funções que considero importantes para manipular dados em geral (outras funções mais específicas deixarei para vermos ao longo do curso)

  1. filter: a função filter tem por objetivo como o próprio nome diz filtar informações dentro de um data frame utilizando operações lógicas (como vimos acima).

  2. mutate: a função mutate tem por objetivo modificar ou criar uma nova variável dentro do data frame. Exemplo:

pnad <- pnad %>%  #usamos o pipe para referenciar o objeto que a função vai utilizar
  mutate(idade2 = idade^2) #dessa forma criamos uma variável derivada de uma pré-existente

head(pnad)
## # A tibble: 6 × 10
##     ano  trim uf       zona   sexo   idade cor       escolaridade salario idade2
##   <dbl> <dbl> <chr>    <chr>  <fct>  <dbl> <fct>            <dbl>   <dbl>  <dbl>
## 1  2022     3 Rondônia Urbana Mulher    38 Pretos o…           12    1212   1444
## 2  2022     3 Rondônia Urbana Homem     42 Pretos o…            6    1212   1764
## 3  2022     3 Rondônia Urbana Homem     20 Pretos o…           11    1212    400
## 4  2022     3 Rondônia Urbana Homem     26 Pretos o…           10    1212    676
## 5  2022     3 Rondônia Urbana Homem     19 Pretos o…            9    1212    361
## 6  2022     3 Rondônia Urbana Mulher    47 Branca               0    1400   2209

Por hoje é só, pessoal,

Até a próxima aula!