Aula 6 Objetivos

  • Aprender como a integrar várias bancos de dados
  • Transformar bancos de dados usando recodificação complexa
  • Controlando a aparência de 'chunks' no documento final
  • Incluindo bibliografias em R Markdown

Integrando Bancos de Dados

  • Freqüentemente, nossa contribuição principal como pesquisadores
  • Identifique colunas 'chaves' em cada tabela
    • Precisam os mesmos nomes de colunas - rename()
    • Precisam o mesmo tipo de conteúdo - mutate()
    • Precisam os mesmos niveis e formatação para fatores - fct_recode()

Integrando Bancos de Dados

  • O que quiser acontecer com missing data em uma tabela? Incluir ou excluir as unidades?
  • Pense no tamanho e na estrutura do banco de dados necessário para a análise
    • Mesmo tamanho da primeira tabela = left_join
    • Mesmo tamanho da segunda tabela = right_join
    • Menor tamanho possível = inner_join
    • Maior tamanho possível = full_join
  • Ex. mapas: importante mostrar todos as fronteiras mesmo que não tem dados - left
  • Ex. survival analysis: incluir todas as unidades do começo - left
  • Ex. regressão: precisamos dados completos - inner

Integrando Bancos de Dados

Mun State Popn
A SP 1000
B SP 2000
C SP 500
D RJ 300
E RJ 1700
F PB 1200
State State_popn
SP 40m
RJ 15m
BA 14m

Integrando Bancos de Dados - inner_join

Mun_data %>% inner_join(State_data,by="State")
Mun State Popn State_popn
A SP 1000 40m
B SP 2000 40m
C SP 500 40m
D RJ 300 15m
E RJ 1700 15m

Integrando Bancos de Dados - left_join

Mun_data %>% left_join(State_data,by="State")
Mun State Popn State_popn
A SP 1000 40m
B SP 2000 40m
C SP 500 40m
D RJ 300 15m
E RJ 1700 15m
F PB 1200 NA

Integrando Bancos de Dados - right_join

Mun_data %>% right_join(State_data,by="State")
Mun State Popn State_popn
A SP 1000 40m
B SP 2000 40m
C SP 500 40m
D RJ 300 15m
E RJ 1700 15m
NA BA NA 14m

Integrando Bancos de Dados - full_join

Mun_data %>% full_join(State_data,by="State")
Mun State Popn State_popn
A SP 1000 40m
B SP 2000 40m
C SP 500 40m
D RJ 300 15m
E RJ 1700 15m
F PB 1200 NA
NA BA NA 14m

Recodificação Complexa

  • Usamos mutate para construir funções de variáveis atuais
    • fácil para funções numéricas: flights %>% mutate(speed=distance/time)
  • Mais complexo quando usamos/queremos variáveis de caracteres/fatores
    • Precisamos um 'mapping' de valores atuais para novos valores numa nova coluna
mutate(nova_coluna=case_when(condition1~value1,
                             condition2~value2,
                             condition3~value3))
  • Uma alternativa mais flexível para:
mutate(nova_coluna=ifelse(condition,value_if_yes,value_if_no))

Recodificação Complexa

flights %>% mutate(Status=case_when(dep_delay>0~"Late",
                                    dep_delay==0~"On Time",
                                    dep_delay<0~"Early"))
origin dest dep_delay Status
EWR IAH 2 Late
LGA IAH 4 Late
JFK MIA 2 Late
JFK BQN -1 Early
LGA ATL -6 Early

Recodificação Complexa

flights %>% mutate(Big_four=case_when(carrier %in% c("UA","DL","AA","WN")~1,
                                    TRUE~0))
origin carrier dep_delay Big_four
EWR UA 2 1
LGA UA 4 1
JFK AA 2 1
JFK B6 -1 0
LGA DL -6 1

Recodificação Complexa

flights %>% mutate(max_delay=case_when(dep_delay>arr_delay~dep_delay,
                                       dep_delay<=arr_delay~arr_delay))
origin dep_delay arr_delay max_delay
EWR 2 11 11
LGA 4 20 20
JFK 2 33 33
JFK -1 -18 -1
LGA -6 -25 -6

Parâmetros de Chunks

  • Chunks de código de R nos permitimos fazer várias coisas:
    • Avaliar o código silentemente para uso mais tarde
    • Apresentar o código como parece em R para o leitor
    • Apresentar os resultados da execução do código (tabelas, gráficos)
  • O que muda entre estas possibilidades?
    • O código permanece o mesmo
    • Especificamos parâmetros nos chunks

Parâmetros de Chunks

  • eval=TRUE - executar o código
  • echo=TRUE - apresentar o código
  • include=TRUE - apresentar resultados do código

Parâmetros de Chunks

  • warning=FALSE - não apresentar warnings na execução do código
  • message=FALSE - não apresentar mensagens na execução do código

Parâmetros de Chunks

  • cache=TRUE - não executa o código cada vez que 'knit'; lembrar os objetos criados
  • muito útil, mas use com cuidado!

Bibliogafias

  1. Detalhes das nossas referências são mantidos num arquivo .bib (eg. produzido por endnote, zotero, mendeley)

  2. No header inicial do script incluimos: bibliography: bibliography.bib

  3. Quando quiser inserir uma referência no texto, use o 'chave' dentro do arquivo .bib, eg. [@Avelino2006]

  4. No final do documento, adicione um título: ## Bibliography

Bibliogafias

---
title: "Document"
output: pdf_document
bibliography: bibliography.bib
---

The best article is by [@Avelino2006].  
  
\newpage
## Bibliography

Bibliogafias

  • Cada jornal tem o seu próprio estilo
  • Pode baixar aqui e aqui
  • No inicio, inclua csl: american-political-science-association.csl
---
title: "Document"
output: pdf_document
bibliography: bibliography.bib
csl: american-political-science-association.csl
---