+ - 0:00:00
Notes for current slide
Notes for next slide

Introdução a Métodos Computacionais para Ciência Sociais

Lesser Known Tricks on Tidyverse

Tiago Ventura

CPDOC-FGV

1 / 33

Plano de Hoje

Até aqui, cobrimos as seguintes áreas do processo de manipulação de dados:

  • Básico do dplyr.

  • Dados tidy.

  • Visualização.

Hoje vamos fazer uma aula extra com alguns funcionalidades mais avançadas. São elas:

  • Verbos Complementares no Dplyr.

  • Manipulação de Strings (stringr).

  • Expressões Regulares.

2 / 33

Verbos Complementares (Scoped Verbs)

3 / 33

O que são?

Verbos complementares são o dplyr com esteroídes.

Principal Funcionalidade:

  • Aplicar funções do dplyr em múltiplas variáveis com uma única função.

Exemplos:

  • summarise_at, mutate_at,filter_at,

  • select_if, mutate_if, filter_if.

  • rename_all, mutate_all, summarise_all.

4 / 33

Dados

Vamos mostrar alguns exemplos com nossos dados eleitorais:

library(cepespR)
library(tidyverse)
d <- get_votes(year = 2018,
position = "Federal Deputy",
regional_aggregation = "Municipio",
state="RJ") %>%
as_tibble()
cand <- get_candidates(year=2018,
position="Federal Deputy") %>%
as_tibble()
5 / 33

function_if:

Altera variáveis que satisfaçam um critério lógico

Estrutura Básica

function_if(critério_lógico, função alterando)

Dois Componentes

  • Um condições lógica (is.numeric, is.character, is.na)

  • função alterando quando a condições lógica for TRUE.

6 / 33

select_if

d %>%
select_if(is.numeric)
## # A tibble: 51,768 x 10
## ANO_ELEICAO NUM_TURNO CODIGO_CARGO NUMERO_CANDIDATO CODIGO_MACRO CODIGO_MESO CODIGO_MICRO
## <int> <int> <int> <int> <int> <int> <int>
## 1 2018 1 6 10 3 5 13
## 2 2018 1 6 1000 3 5 13
## 3 2018 1 6 1001 3 5 13
## 4 2018 1 6 1002 3 5 13
## 5 2018 1 6 1003 3 5 13
## 6 2018 1 6 1004 3 5 13
## 7 2018 1 6 1005 3 5 13
## 8 2018 1 6 1007 3 5 13
## 9 2018 1 6 1009 3 5 13
## 10 2018 1 6 1010 3 5 13
## # … with 51,758 more rows, and 3 more variables: COD_MUN_TSE <int>, COD_MUN_IBGE <int>,
## # QTDE_VOTOS <int>
7 / 33

mutate_if

Altera e salva novas variáveis de acordo com uma condição.

d %>%
mutate_if(is.character, str_to_title)
## # A tibble: 51,768 x 19
## ANO_ELEICAO SIGLA_UE NUM_TURNO DESCRICAO_ELEIC… CODIGO_CARGO DESCRICAO_CARGO
## <int> <chr> <int> <chr> <int> <chr>
## 1 2018 Rj 1 Eleições Gerais… 6 Deputado Feder…
## 2 2018 Rj 1 Eleições Gerais… 6 Deputado Feder…
## 3 2018 Rj 1 Eleições Gerais… 6 Deputado Feder…
## 4 2018 Rj 1 Eleições Gerais… 6 Deputado Feder…
## 5 2018 Rj 1 Eleições Gerais… 6 Deputado Feder…
## 6 2018 Rj 1 Eleições Gerais… 6 Deputado Feder…
## 7 2018 Rj 1 Eleições Gerais… 6 Deputado Feder…
## 8 2018 Rj 1 Eleições Gerais… 6 Deputado Feder…
## 9 2018 Rj 1 Eleições Gerais… 6 Deputado Feder…
## 10 2018 Rj 1 Eleições Gerais… 6 Deputado Feder…
## # … with 51,758 more rows, and 13 more variables: NUMERO_CANDIDATO <int>, CODIGO_MACRO <int>,
## # NOME_MACRO <chr>, UF <chr>, NOME_UF <chr>, CODIGO_MESO <int>, NOME_MESO <chr>,
## # CODIGO_MICRO <int>, NOME_MICRO <chr>, COD_MUN_TSE <int>, COD_MUN_IBGE <int>,
## # NOME_MUNICIPIO <chr>, QTDE_VOTOS <int>
8 / 33

mutate_if: alterando os nomes.

d %>%
# dica para se quiser alterar o nome ao mesmo tempo.
mutate_if(is.character, list(to_title= ~ str_to_title(.x)))
## # A tibble: 51,768 x 28
## ANO_ELEICAO SIGLA_UE NUM_TURNO DESCRICAO_ELEIC… CODIGO_CARGO DESCRICAO_CARGO
## <int> <chr> <int> <chr> <int> <chr>
## 1 2018 RJ 1 ELEIÇÕES GERAIS… 6 DEPUTADO FEDER…
## 2 2018 RJ 1 ELEIÇÕES GERAIS… 6 DEPUTADO FEDER…
## 3 2018 RJ 1 ELEIÇÕES GERAIS… 6 DEPUTADO FEDER…
## 4 2018 RJ 1 ELEIÇÕES GERAIS… 6 DEPUTADO FEDER…
## 5 2018 RJ 1 ELEIÇÕES GERAIS… 6 DEPUTADO FEDER…
## 6 2018 RJ 1 ELEIÇÕES GERAIS… 6 DEPUTADO FEDER…
## 7 2018 RJ 1 ELEIÇÕES GERAIS… 6 DEPUTADO FEDER…
## 8 2018 RJ 1 ELEIÇÕES GERAIS… 6 DEPUTADO FEDER…
## 9 2018 RJ 1 ELEIÇÕES GERAIS… 6 DEPUTADO FEDER…
## 10 2018 RJ 1 ELEIÇÕES GERAIS… 6 DEPUTADO FEDER…
## # … with 51,758 more rows, and 22 more variables: NUMERO_CANDIDATO <int>, CODIGO_MACRO <int>,
## # NOME_MACRO <chr>, UF <chr>, NOME_UF <chr>, CODIGO_MESO <int>, NOME_MESO <chr>,
## # CODIGO_MICRO <int>, NOME_MICRO <chr>, COD_MUN_TSE <int>, COD_MUN_IBGE <int>,
## # NOME_MUNICIPIO <chr>, QTDE_VOTOS <int>, SIGLA_UE_to_title <chr>,
## # DESCRICAO_ELEICAO_to_title <chr>, DESCRICAO_CARGO_to_title <chr>,
## # NOME_MACRO_to_title <chr>, UF_to_title <chr>, NOME_UF_to_title <chr>,
## # NOME_MESO_to_title <chr>, NOME_MICRO_to_title <chr>, NOME_MUNICIPIO_to_title <chr>
9 / 33

summarise_if

# pouco sentido nesse contexto, mas somente para mostrar como funciona.
d %>%
summarise_if(is.numeric, max)
## # A tibble: 1 x 10
## ANO_ELEICAO NUM_TURNO CODIGO_CARGO NUMERO_CANDIDATO CODIGO_MACRO CODIGO_MESO CODIGO_MICRO
## <int> <int> <int> <int> <int> <int> <int>
## 1 2018 1 6 9099 3 6 18
## # … with 3 more variables: COD_MUN_TSE <int>, COD_MUN_IBGE <int>, QTDE_VOTOS <int>
10 / 33

function_at

Altera variáveis específicadas pelo nome.

verb_at(vars(variaveis), fun(alterações))

Dois Componentes:

  • Variáveis (onde é permitido usar as funções de ajuda do select)

  • O que você pretende alterar nestas variáveis.

11 / 33

mutate_at

# Converter Descricao para Minusculo
cand %>%
mutate_at(vars(contains("DESCRICAO")),
str_to_lower) %>%
select(contains("DESCRICAO"))
## # A tibble: 8,588 x 8
## DESCRICAO_ELEIC… DESCRICAO_UE DESCRICAO_CARGO DESCRICAO_OCUPA… DESCRICAO_SEXO
## <chr> <chr> <chr> <chr> <chr>
## 1 eleições gerais… acre deputado feder… vereador masculino
## 2 eleições gerais… acre deputado feder… empresário masculino
## 3 eleições gerais… acre deputado feder… empresário masculino
## 4 eleições gerais… acre deputado feder… empresário masculino
## 5 eleições gerais… acre deputado feder… outros masculino
## 6 eleições gerais… acre deputado feder… outros feminino
## 7 eleições gerais… acre deputado feder… servidor públic… masculino
## 8 eleições gerais… acre deputado feder… professor de en… masculino
## 9 eleições gerais… acre deputado feder… servidor públic… masculino
## 10 eleições gerais… acre deputado feder… policial militar masculino
## # … with 8,578 more rows, and 3 more variables: DESCRICAO_GRAU_INSTRUCAO <chr>,
## # DESCRICAO_ESTADO_CIVIL <chr>, DESCRICAO_NACIONALIDADE <chr>
12 / 33

Rename_at

cand %>%
rename_at(vars(ends_with("CARGO")),
~ str_replace(.x, "CARGO", "Cargo")) %>%
select(contains("Cargo"))
## # A tibble: 8,588 x 2
## CODIGO_Cargo DESCRICAO_Cargo
## <int> <chr>
## 1 6 DEPUTADO FEDERAL
## 2 6 DEPUTADO FEDERAL
## 3 6 DEPUTADO FEDERAL
## 4 6 DEPUTADO FEDERAL
## 5 6 DEPUTADO FEDERAL
## 6 6 DEPUTADO FEDERAL
## 7 6 DEPUTADO FEDERAL
## 8 6 DEPUTADO FEDERAL
## 9 6 DEPUTADO FEDERAL
## 10 6 DEPUTADO FEDERAL
## # … with 8,578 more rows
13 / 33

Calma lá Tiago... O que é essa ~

Tildas, cobrinhas, ou ~ são atalhos para funções em R. Ao invés de você escrever uma função completa, ou uma função anônima, você usa a ~ e o .x como atalhos.

Alguns exemplos:

14 / 33

Calma lá Tiago... O que é essa ~

Tildas, cobrinhas, ou ~ são atalhos para funções em R. Ao invés de você escrever uma função completa, ou uma função anônima, você usa a ~ e o .x como atalhos.

Alguns exemplos:

map(list(a=sample(100, 10),
b=sample(100, 10),
c=sample(100, 10)),
function(x) mean(x))
## $a
## [1] 42.8
##
## $b
## [1] 41.6
##
## $c
## [1] 46
map(list(a=sample(100, 10),
b=sample(100, 10),
c=sample(100, 10)),
~ mean(.x))
## $a
## [1] 43.4
##
## $b
## [1] 47
##
## $c
## [1] 52.7
14 / 33

Calma lá Tiago... O que é essa ~

Tildas, cobrinhas, ou ~ são atalhos para funções em R. Ao invés de você escrever uma função completa, ou uma função anônima, você usa a ~ e o .x como atalhos.

Alguns exemplos:

map(list(a=sample(100, 10),
b=sample(100, 10),
c=sample(100, 10)),
function(x) mean(x))
## $a
## [1] 42.8
##
## $b
## [1] 41.6
##
## $c
## [1] 46
map(list(a=sample(100, 10),
b=sample(100, 10),
c=sample(100, 10)),
~ mean(.x))
## $a
## [1] 43.4
##
## $b
## [1] 47
##
## $c
## [1] 52.7

Este é o básico de programação funcional, que aprenderemos mais na frente.

14 / 33

Exemplo 2

cand %>%
rename_at(vars(ends_with("CARGO")),
~ str_replace(.x, "CARGO", "Cargo")) %>%
select(contains("Cargo"))
## # A tibble: 8,588 x 2
## CODIGO_Cargo DESCRICAO_Cargo
## <int> <chr>
## 1 6 DEPUTADO FEDERAL
## 2 6 DEPUTADO FEDERAL
## 3 6 DEPUTADO FEDERAL
## 4 6 DEPUTADO FEDERAL
## 5 6 DEPUTADO FEDERAL
## 6 6 DEPUTADO FEDERAL
## 7 6 DEPUTADO FEDERAL
## 8 6 DEPUTADO FEDERAL
## 9 6 DEPUTADO FEDERAL
## 10 6 DEPUTADO FEDERAL
## # … with 8,578 more rows
cand %>%
rename_at(vars(ends_with("CARGO")),
function(x) str_replace(x, "CARGO", "Cargo")) %>%
select(contains("Cargo"))
## # A tibble: 8,588 x 2
## CODIGO_Cargo DESCRICAO_Cargo
## <int> <chr>
## 1 6 DEPUTADO FEDERAL
## 2 6 DEPUTADO FEDERAL
## 3 6 DEPUTADO FEDERAL
## 4 6 DEPUTADO FEDERAL
## 5 6 DEPUTADO FEDERAL
## 6 6 DEPUTADO FEDERAL
## 7 6 DEPUTADO FEDERAL
## 8 6 DEPUTADO FEDERAL
## 9 6 DEPUTADO FEDERAL
## 10 6 DEPUTADO FEDERAL
## # … with 8,578 more rows
15 / 33

function_all

Altera todas as variáveis de uma vez.

function_all(var=all_by_default, função)
16 / 33

Mutate_all

cand %>%
mutate_all(str_trim) # retira espaços extras.
## # A tibble: 8,588 x 42
## DATA_GERACAO HORA_GERACAO ANO_ELEICAO NUM_TURNO DESCRICAO_ELEIC… SIGLA_UF SIGLA_UE
## <chr> <chr> <chr> <chr> <chr> <chr> <chr>
## 1 30/10/2018 10:39:17 2018 1 Eleições Gerais… AC AC
## 2 30/10/2018 10:39:17 2018 1 Eleições Gerais… AC AC
## 3 30/10/2018 10:39:17 2018 1 Eleições Gerais… AC AC
## 4 30/10/2018 10:39:17 2018 1 Eleições Gerais… AC AC
## 5 30/10/2018 10:39:17 2018 1 Eleições Gerais… AC AC
## 6 30/10/2018 10:39:17 2018 1 Eleições Gerais… AC AC
## 7 30/10/2018 10:39:17 2018 1 Eleições Gerais… AC AC
## 8 30/10/2018 10:39:17 2018 1 Eleições Gerais… AC AC
## 9 30/10/2018 10:39:17 2018 1 Eleições Gerais… AC AC
## 10 30/10/2018 10:39:17 2018 1 Eleições Gerais… AC AC
## # … with 8,578 more rows, and 35 more variables: DESCRICAO_UE <chr>, CODIGO_CARGO <chr>,
## # DESCRICAO_CARGO <chr>, NOME_CANDIDATO <chr>, NUMERO_CANDIDATO <chr>, CPF_CANDIDATO <chr>,
## # NOME_URNA_CANDIDATO <chr>, COD_SITUACAO_CANDIDATURA <chr>,
## # DES_SITUACAO_CANDIDATURA <chr>, NUMERO_PARTIDO <chr>, SIGLA_PARTIDO <chr>,
## # NOME_PARTIDO <chr>, CODIGO_LEGENDA <chr>, SIGLA_LEGENDA <chr>, COMPOSICAO_LEGENDA <chr>,
## # NOME_COLIGACAO <chr>, CODIGO_OCUPACAO <chr>, DESCRICAO_OCUPACAO <chr>,
## # DATA_NASCIMENTO <chr>, NUM_TITULO_ELEITORAL_CANDIDATO <chr>, IDADE_DATA_ELEICAO <chr>,
## # CODIGO_SEXO <chr>, DESCRICAO_SEXO <chr>, COD_GRAU_INSTRUCAO <chr>,
## # DESCRICAO_GRAU_INSTRUCAO <chr>, CODIGO_ESTADO_CIVIL <chr>, DESCRICAO_ESTADO_CIVIL <chr>,
## # CODIGO_NACIONALIDADE <chr>, DESCRICAO_NACIONALIDADE <chr>, SIGLA_UF_NASCIMENTO <chr>,
## # CODIGO_MUNICIPIO_NASCIMENTO <chr>, NOME_MUNICIPIO_NASCIMENTO <chr>,
## # DESPESA_MAX_CAMPANHA <chr>, COD_SIT_TOT_TURNO <chr>, DESC_SIT_TOT_TURNO <chr>
17 / 33

Summarize_all

Exemplo com o banco mtcars

mtcars %>%
summarise_all(mean)
## mpg cyl disp hp drat wt qsec vs am gear carb
## 1 20.09062 6.1875 230.7219 146.6875 3.596563 3.21725 17.84875 0.4375 0.40625 3.6875 2.8125
18 / 33

Rename_all: usando nossa ~

cand %>%
rename_all(~ str_replace_all(.x, "_", "x"))
## # A tibble: 8,588 x 42
## DATAxGERACAO HORAxGERACAO ANOxELEICAO NUMxTURNO DESCRICAOxELEIC… SIGLAxUF SIGLAxUE
## <chr> <chr> <int> <int> <chr> <chr> <chr>
## 1 30/10/2018 10:39:17 2018 1 Eleições Gerais… AC AC
## 2 30/10/2018 10:39:17 2018 1 Eleições Gerais… AC AC
## 3 30/10/2018 10:39:17 2018 1 Eleições Gerais… AC AC
## 4 30/10/2018 10:39:17 2018 1 Eleições Gerais… AC AC
## 5 30/10/2018 10:39:17 2018 1 Eleições Gerais… AC AC
## 6 30/10/2018 10:39:17 2018 1 Eleições Gerais… AC AC
## 7 30/10/2018 10:39:17 2018 1 Eleições Gerais… AC AC
## 8 30/10/2018 10:39:17 2018 1 Eleições Gerais… AC AC
## 9 30/10/2018 10:39:17 2018 1 Eleições Gerais… AC AC
## 10 30/10/2018 10:39:17 2018 1 Eleições Gerais… AC AC
## # … with 8,578 more rows, and 35 more variables: DESCRICAOxUE <chr>, CODIGOxCARGO <int>,
## # DESCRICAOxCARGO <chr>, NOMExCANDIDATO <chr>, NUMEROxCANDIDATO <int>, CPFxCANDIDATO <chr>,
## # NOMExURNAxCANDIDATO <chr>, CODxSITUACAOxCANDIDATURA <int>,
## # DESxSITUACAOxCANDIDATURA <chr>, NUMEROxPARTIDO <int>, SIGLAxPARTIDO <chr>,
## # NOMExPARTIDO <chr>, CODIGOxLEGENDA <int64>, SIGLAxLEGENDA <chr>,
## # COMPOSICAOxLEGENDA <chr>, NOMExCOLIGACAO <chr>, CODIGOxOCUPACAO <int>,
## # DESCRICAOxOCUPACAO <chr>, DATAxNASCIMENTO <chr>, NUMxTITULOxELEITORALxCANDIDATO <chr>,
## # IDADExDATAxELEICAO <int>, CODIGOxSEXO <int>, DESCRICAOxSEXO <chr>,
## # CODxGRAUxINSTRUCAO <int>, DESCRICAOxGRAUxINSTRUCAO <chr>, CODIGOxESTADOxCIVIL <int>,
## # DESCRICAOxESTADOxCIVIL <chr>, CODIGOxNACIONALIDADE <int>, DESCRICAOxNACIONALIDADE <chr>,
## # SIGLAxUFxNASCIMENTO <chr>, CODIGOxMUNICIPIOxNASCIMENTO <int>,
## # NOMExMUNICIPIOxNASCIMENTO <chr>, DESPESAxMAXxCAMPANHA <int>, CODxSITxTOTxTURNO <int>,
## # DESCxSITxTOTxTURNO <chr>
19 / 33

stringr: manipulação de strings.

20 / 33

Strings

Strings = variável de texto.

Estas técnicas de manipulação de strings são fundamentais quando fazemos raspagem de texto, usamos dados de redes sociais, e até preparamos visualizações de dados.

Para aprendermos a manipular strings, vamos:

  • Usar o pacote do tidyverse stringr

  • Aprender o básico de expressões regulares.

21 / 33

stringr

O stringr, como todo o tidyverse, faz o que seu nome indica. Estas funções, em geral, possuem dois componentes. Todas as suas funções iniciam com str. Veja a lista completa de funções aqui

Vejamos alguns exemplos.

22 / 33

Detectar Padrões

Dois Componentes:

  • Primeiro argumento: input

  • Segundo argumento: padrão para detectar

23 / 33

Detectar Padrões

Dois Componentes:

  • Primeiro argumento: input

  • Segundo argumento: padrão para detectar

str_detect()

str_detect(c("Tiago", "Ventura"), "Ventura")
## [1] FALSE TRUE
23 / 33

Detectar Padrões

Dois Componentes:

  • Primeiro argumento: input

  • Segundo argumento: padrão para detectar

str_detect()

str_detect(c("Tiago", "Ventura"), "Ventura")
## [1] FALSE TRUE

str_count()

str_count(c("Tiago", "Ventura"), "Ventura")
## [1] 0 1
23 / 33

Detectar Padrões

Dois Componentes:

  • Primeiro argumento: input

  • Segundo argumento: padrão para detectar

str_detect()

str_detect(c("Tiago", "Ventura"), "Ventura")
## [1] FALSE TRUE

str_count()

str_count(c("Tiago", "Ventura"), "Ventura")
## [1] 0 1

str_locate()

str_locate(c("Tiago#umd", "Ventura#fgv"), "#")
## start end
## [1,] 6 6
## [2,] 8 8
23 / 33

Detectar Padrões

Dois Componentes:

  • Primeiro argumento: input

  • Segundo argumento: padrão para detectar

str_detect()

str_detect(c("Tiago", "Ventura"), "Ventura")
## [1] FALSE TRUE

str_count()

str_count(c("Tiago", "Ventura"), "Ventura")
## [1] 0 1

str_locate()

str_locate(c("Tiago#umd", "Ventura#fgv"), "#")
## start end
## [1,] 6 6
## [2,] 8 8
23 / 33

Alterar strings.

str_replace_all()

str_replace_all(c("Tiago#umd", "Ventura#fgv"), "#", " ")
## [1] "Tiago umd" "Ventura fgv"

str_to_lower()

str_to_lower(c("Tiago#umd", "Ventura#fgv"))
## [1] "tiago#umd" "ventura#fgv"
24 / 33

Mais importante: Fácil de implementar com mutate.

cand %>%
select(NOME_URNA_CANDIDATO) %>%
mutate(nome_minusculo=str_to_lower(NOME_URNA_CANDIDATO))
## # A tibble: 8,588 x 2
## NOME_URNA_CANDIDATO nome_minusculo
## <chr> <chr>
## 1 "PASTOR MANUEL MARCOS" "pastor manuel marcos"
## 2 "JUNIOR PARIS DAKAR" "junior paris dakar"
## 3 "RUDILEI ESTRELA" "rudilei estrela"
## 4 "NELSON SALES" "nelson sales"
## 5 "EURICO CORDEIRO " "eurico cordeiro "
## 6 "DJÊ CAVALCANTE" "djê cavalcante"
## 7 "PAULO SORIANO" "paulo soriano"
## 8 "JESUS SÉRGIO" "jesus sérgio"
## 9 "CHICO DOIDO DA SAÚDE" "chico doido da saúde"
## 10 "CABRAL" "cabral"
## # … with 8,578 more rows
25 / 33

Extrair Padrões

Dois Componentes:

  • Primeiro argumento: input

  • Segundo argumento: padrão para extrair-dividir.

nomes<-cand$NOME_URNA_CANDIDATO[1:10]

str_sub(): Extrai por posição.

str_sub(nomes, 1, 5)
## [1] "PASTO" "JUNIO" "RUDIL" "NELSO" "EURIC" "DJÊ C" "PAULO" "JESUS" "CHICO" "CABRA"

str_subset(): retorna a string com o padrão.

str_subset(nomes, "PASTOR")
## [1] "PASTOR MANUEL MARCOS"

]

26 / 33

str_extract_all(): Extrai somente o padrão.

str_extract_all(nomes, "PASTOR|CHICO") # | = or
## [[1]]
## [1] "PASTOR"
##
## [[2]]
## character(0)
##
## [[3]]
## character(0)
##
## [[4]]
## character(0)
##
## [[5]]
## character(0)
##
## [[6]]
## character(0)
##
## [[7]]
## character(0)
##
## [[8]]
## character(0)
##
## [[9]]
## [1] "CHICO"
##
## [[10]]
## character(0)

]

27 / 33

Como escrever padrões mais gerais?

Na maior parte das vezes, buscamos padrões mais gerais em nossas buscas textuais. Por exemplo:

  • Todas as frases que terminam com a letra "a"

  • Todas as strings com valores numéricos.

  • Todas as strings se referindo a Jair Bolsonaro e algumas variações do nome.

Para fazer buscas textuais mais gerais, utilizaremos regular expressions.

Expressões regulares são atalhos usados por todas as linguagens de programação que tornam buscas textuais mais gerais.

Não é fácil memorizar expressões regulares, portanto, aqui darei somente um passada bem geral somente para mostrar para vocês como funcionam.

28 / 33

Expressões Regulares

Anchors

  • ^ para encontrar padrões no início do texto.
  • $ para encontrar padrões no início do texto.
tweets <- c("RT: Hello! Hello", "Hello World!")
str_subset(tweets, "^RT")
## [1] "RT: Hello! Hello"
# Com !
str_subset(tweets, "!")
## [1] "RT: Hello! Hello" "Hello World!"
# Terminando com !
str_subset(tweets, "!$")
## [1] "Hello World!"
29 / 33

Outros exemplos

  • .: qualquer character.
  • \d: digitos
  • \s: espaços.
  • [abc]: a, b, or c.
  • [^abc]: Tudo menos a, b, ou c.
# Começa com R e qualquer digito.
str_subset(tweets, "^R.")
## [1] "RT: Hello! Hello"
# Algums digito
str_subset(tweets, "\\d")
## character(0)
# Contem Algum dos Valores
str_detect(c("bolsonaro", "Bolsonaros"), "[b|B]olsonaro")
## [1] TRUE TRUE
30 / 33

Again...

31 / 33

Again...

knitr::include_graphics("https://media.giphy.com/media/8ykJ4yAnwgK2I/giphy.gif")

31 / 33

Again...

knitr::include_graphics("https://media.giphy.com/media/8ykJ4yAnwgK2I/giphy.gif")

31 / 33

Onde aprender mais:

32 / 33

Plano de Hoje

Até aqui, cobrimos as seguintes áreas do processo de manipulação de dados:

  • Básico do dplyr.

  • Dados tidy.

  • Visualização.

Hoje vamos fazer uma aula extra com alguns funcionalidades mais avançadas. São elas:

  • Verbos Complementares no Dplyr.

  • Manipulação de Strings (stringr).

  • Expressões Regulares.

2 / 33
Paused

Help

Keyboard shortcuts

, , Pg Up, k Go to previous slide
, , Pg Dn, Space, j Go to next slide
Home Go to first slide
End Go to last slide
Number + Return Go to specific slide
b / m / f Toggle blackout / mirrored / fullscreen mode
c Clone slideshow
p Toggle presenter mode
t Restart the presentation timer
?, h Toggle this help
Esc Back to slideshow