Manipulação de Dados 2

Curso de análise e visualização de dados

Manipulação de Dados 1 Manipulação de Dados 3

Criando uma Amostra

Para criar uma amostra aleatória dos dados disponíveis na sua base, estabeleça um valor amostral e requisite que o R crie essa amostra com a função sample_n do pacote dplyr:

amostra <- candidato_brasil %>% 
  sample_n(500)

Filtrando a Base de Dados por Períodos Específicos

Em algumas ocasiões pode ser necessário filtrar a base de dados por um período específico no tempo. Para isso, utilize a função between, do pacote dplyr. Vamos descobrir, por exemplo, quem são os candidatos jovens que disputaram as últimas eleições?

candidato_brasil %>% mutate(DT_NASCIMENTO = lubridate::dmy(DT_NASCIMENTO)) %>%
  filter(between(DT_NASCIMENTO, lubridate::as_date("1980-01-01"), lubridate::as_date("2000-01-01")))

Buscando por Palavras-Chaves

Caso seja necessário filtrar a base de dados por palavras ou expressões no corpo do texto das mensagens, utilize a função grepl() do R Base. A função comporta sintaxe em Regex. Mas, para efeito de simplificação, pesquisaremos apenas por operadores mais simples. Que tal descobrirmos quais candidatos e candidatas têm João, José ou Maria no nome?

candidato_brasil %>% 
  filter(grepl("JO[ÃO|OANA]|JOSÉ|MARIA", NM_CANDIDATO))

Alterando o Texto de Algumas Strings

Para realizar algumas padronizações no banco de dados, pode ser importante uniformizar algumas strings. Uma operação que permite realizar essas alterações é substituir e alterar o texto com a função gsub.

candidato_brasil %>% 
  filter(DS_OCUPACAO == "JORNALISTA E REDATOR") %>% 
  mutate(DS_OCUPACAO = gsub("JORNALISTA E REDATOR", "JORNALISTA", DS_OCUPACAO))

Criando uma Variável Categórica a partir de Outra

É possível recodificar uma variável com novos valores e categorias. Para isso, utilize, mais uma vez, a função grepl(), e combine-a com a função case_when() do pacote dplyr.

candidato_brasil %>%
  mutate(
    IDEOLOGIA = case_when(
      grepl("PP", SG_PARTIDO) ~ "DIREITA",
      grepl("REPUBLICANOS", SG_PARTIDO) ~ "DIREITA",
      grepl("UNIÃO", SG_PARTIDO) ~ "DIREITA",
      grepl("PL", SG_PARTIDO) ~ "DIREITA",
      grepl("PSC", SG_PARTIDO) ~ "DIREITA",
      grepl("PATRIOTA", SG_PARTIDO) ~ "DIREITA",
      grepl("PT", SG_PARTIDO) ~ "ESQUERDA",
      grepl("PSB", SG_PARTIDO) ~ "ESQUERDA",
      grepl("PCO", SG_PARTIDO) ~ "ESQUERDA",
      grepl("PC do B", SG_PARTIDO) ~ "ESQUERDA",
      grepl("REDE", SG_PARTIDO) ~ "ESQUERDA",
      T ~ "OUTRO"))

Anonimizando os Sujeitos

Para anonimizar os sujeitos de seu banco de dados, é necessário utilizar um pacote adicional de criptografia. Uma sugestão é o pacote anonymizer, desenvolvido por Paul Hendricks. Utilize o seguinte comando para instalar o pacote:

remotes::install_github("paulhendricks/anonymizer")

E, em seguida, indique o vetor a ser anonimizado. Uma boa opção é utilizar o algoritmo de criptografia md5.

candidato_brasil$NM_ANONIMO <- candidato_brasil$NM_CANDIDATO %>% anonymizer::hash(.algo = "md5")

Manipulando strings

Muitas vezes, os valores dispostos em nosso banco de dados se apresentam como variáveis de texto (strings). Algumas dessas variáveis textuais precisam ser remodeladas ou transformadas, a fim de facilitar nossa interpretação.

Vamos aprender algumas funções de manipulação de strings a seguir.

  1. Convertendo strings em minúsculas e em maiúsculas:
  • str_to_upper
pinguins5 <- pinguins1 %>% 
  mutate(maiuscula = str_to_upper(island))
  • str_to_lower
pinguins6 <- pinguins5 %>% 
  mutate(minuscula = str_to_lower(species))
  • str_to_title
pinguins7 <- pinguins6 %>% 
  mutate(titulo = str_to_title(sex))
  1. Detectando padrões textuais em um vetor de strings
pinguins7 <- pinguins7 %>% 
  mutate(string_teste = sex)

pinguins7$string_teste <- pinguins7$string_teste %>% 
  str_detect("ale")
  1. Substituindo padrões textuais em um vetor de strings
pinguins7$sex <- pinguins7$sex %>% 
  str_replace("female", "fêmea") %>% 
  str_replace("male", "macho")

EXERCÍCIO 1

  • Considere o conjunto de dados abaixo:
bbb21_mensagens <- read.csv(
  "https://raw.githubusercontent.com/ombudsmanviktor/workshop_rstats/main/aula6/bbb21_mensagens.csv")
  1. Procure quantas vezes Juliette é mencionada nesse conjunto de mensagens.

  2. Substitua todas as menções a Bolsonaro (ou bolsonaro ou BOLSONARO) por Bozo

  3. Transforme todos os caracteres das mensagens nos tweets em minúsculas.