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.
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.
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"
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
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:
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
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.
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).
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"
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)
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).
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!