Conteúdo:


Leitura da base de dados

Tratando as variáveis qualitativas

Pacote dplyr

O pacote dplyr é um dos pacotes mais poderosos e populares do R, desenvolvido por Hadley Wickham.

O dplyr é um poderoso pacote R para manipular, limpar e resumir dados não estruturados. Em suma, faz a exploração de dados e manipulação de dados de forma fácil e rápida no R.

# Carregando o pacote dplyr
library(dplyr)

Selecionando n linhas aleatorias: função sample_n(.)

# Selecionando 3 linhas aleatoriamente
sample_n(base,3)

Removendo linhas duplicadas: função distinct(.)

Baseado em todas as variáveis

# excluindo linhas iguais
base2=distinct(base)

Baseado em uma variável

# excluindo linhas que possuem Microrregiao igual
base3=distinct(base,Microrregiao)

Baseado em mais de uma variável

# excluindo linhas que possuem idade e escolatridade iguais
base4=distinct(base,idade, escolaridade)

Selecionando colunas (variáveis): função select(.)

# Selecionando a variavel idade e  todas as variáveis de trabalho armado até raca na base
base5=select(base,idade, trab_armado:raca)


# Selecionando todas as variaveis com exceção de idade e idade legal
base6=select(base,-c(idade,id_legal))


# Selecionando todas as variaveis cujo nome inicia com e
base7=select(base,starts_with("e")) #também ends_with() e contains().

Podem ser úteis também ends_with() e contains().

Reordenando as as colunas das variáveis: função select(.)

# reorganiza o data frame, iniciando com a variável Microrregiao e depois as demais
base8=select(base,Microrregiao,everything())

Renomeando variáveis: função rename(.)

# Renomeando a variável Microrregiao para micro
base9 = rename(base8,Micro = Microrregiao)

Selecionando um subconjunto de linhas que satisfazem uma ou mais condições: função filter(.)

# Selecionando somente os indivíduos do sexo masculino
base9 = filter(base, sexo == "Masculino")


# Selecionando somente os indivíduos do sexo masculino e branco
base10 = filter(base, sexo == "Masculino" & raca == "Branco")


# Selecionando somente os indivíduos com escolaridade de 1 a 3 anos e 4 a 7 anos
base11 = filter(base, escolaridade %in% c("1 a 3","4 a 7"))


# Selecionando indivíduos que ou são homens solteiros ou são mulheres casadas
base12 = filter(base, (estado_civil=="Solteiro" & sexo =="Masculino") | (estado_civil=="Casado" & sexo =="Feminino") )

Ordenando seus data frames: função arrange(.)

# Ordenando os dados pela variável idade de forma crescente
base13 = arrange(base, idade )

# Ordenando os dados pela variável idade e escolaridade
base14 = arrange(base, idade ,escolaridade)

# Ordenando os dados pela variável idade de forma decrescente
base15 = arrange(base, desc(idade) )

Criando uma nova variável: função mutate(.) e transmute(.)

# Criando a variável Idade ao quadrado
base16 = mutate(base, idade2 = idade**2 )

# Criando a variável UF e a variável Grandes regiões
base17 = mutate(base, UF = substring(Microrregiao,1,2), Grandes.regioes = substring(UF,1,1) )

# Se você quiser somente manter as variáveis criadas
base18 = transmute(base,UF = substring(Microrregiao,1,2), Grandes.regioes = substring(UF,1,1) )

Resumindo variáveis: função summarize(.)

# Calculando a media e a mediana da variável idade
summarise(base,  media.idade = mean(idade), mediana.idade = median(idade))

Resumindo variáveis por grupo: função group_by(.) e summarize(.)

# Calculando a media da variável idade para as combinações entre sexo, escolaridade e estado civil e a frequencia de indivíduos em cada combinação
grupo = group_by(base, sexo, escolaridade, estado_civil)
resultado=summarise(grupo,  media.idade = mean(idade),frequencia=n())


# Calculando a media da variável idade para as combinações entre idade legal, escolaridade e estado civil e a frequencia de indivíduos em cada combinação
grupo = group_by(base, id_legal, escolaridade, estado_civil)
resultado=summarise(grupo,  media.idade = mean(idade),frequencia=n())

Operador pipe: %>%

Realiza múltiplas ações sem guardar os passos intermediários.

# Selecionando as variáveis idade e idade legal
base18 = base %>% select(idade,id_legal)


base19 = base %>% select(-estado_civil) %>% filter(sexo=="Masculino") %>% group_by(raca,escolaridade) %>% summarise(maximo=max(idade),media=mean(idade))

Aplicando funções em linhas

base20 = base16 %>%
  rowwise() %>% mutate(Max= max(idade:idade2)) %>%
  select(idade,idade2,Max)

Leitura dos dados

Vamos fazer a importação da base Populacao por micro sexo e idade (base.pop), da base Municipios_2010 (base.mun) e da base Num de obitos 2010 (base.obitos).

Vejamos o banco de dados:

Combinando duas bases de dados

O pacote dplyr possui um conjunto de funções que nos auxiliam a combinar dos data frames do nosso interesse.

#Criando a base b1
b1 <- data.frame(ID = c(1010, 2010, 3010, 4010, 5010),
                  W = c('a', 'b', 'c', 'd', 'e'),
                  X = c(1, 1, 0, 0, 1),
                  Y=rnorm(5))
#Criando a base b2

b2 <- data.frame(ID = c(1010, 7010, 3010, 6010, 8010),
                  A = c('z', 'b', 'k', 'd', 'l'),
                  B = c(1, 2, 3, 0, 4),
                  C =rnorm(5))
#Criando a base b3

b3 <- data.frame(Identificacao = c(1010, 5010,2541),
                  Z =rnorm(3),
                  W =c("Rio","São Paulo","Niteroi"))

inner_join

# Função inner_join: Combina as duas bases incluindo todas as variáveis de ambas as bases e todas as linhas comuns as duas bases
merge1 = inner_join(b1,b2,by="ID")


merge2 = inner_join(b1,b3,by=c("ID"="Identificacao"))

left_join

# Função left_join: Combina as duas bases incluindo todas as variáveis de ambas as bases e todas as linhas da base a esquerda
merge3 = left_join(b1,b2,by="ID")

right_join

# Função right_join: Combina as duas bases incluindo todas as variáveis de ambas as bases e todas as linhas da base a direita
merge4 = right_join(b1,b2,by="ID")

full_join

# Função full_join: Combina as duas bases incluindo todas as variáveis de ambas as bases e todas as linhas de ambas as bases
merge5 = full_join(b1,b2,by="ID")

semi_join

# Função semi_join: Combina as duas bases incluindo as variáveis da basea a esquerda e todas as linhas comuns as duas bases
merge6 = semi_join(b1,b2,by="ID")

anti_join

# Função anti_join: Combina as duas bases incluindo as variáveis da base a esquerda e todas as linhas que não são comuns as duas bases
merge7 = anti_join(b1,b2,by="ID")

Combinando dados verticalmente

#Criando a base d1
d1 <- data.frame(ID = c(1010, 2010, 3010, 4010, 5010),
                  W = c('a', 'b', 'a', 'b', 'e'),
                  X = c(1, 1, 0, 0, 1),
                  Y=c(3,6,3,5,7))



#Criando a base d2

d2 <- data.frame(ID = c(1010, 2010, 5010),
                  W = c('a', 'b', 'e'),
                  X = c(1, 1, 1),
                  Y=c(3,6,7))



#Criando a base d3

d3 <- data.frame(ID = c(3210, 2011, 1017),
                  W = c('b', 'e', "a"),
                  X = c(1,0,1),
                  Y=c(3,5,4))



#Criando a base d4

d4 <- data.frame(ID = c(3210, 2011, 1017),
                  idade = c(10,20,32),
                  Sexo = c(1,0,1))

Juntando por linhas comuns com intersect

#Criando uma base com as linhas comus as duas bases
intersect(d1,d2)

Juntando todas as linhas com union

#Criando uma base unindo todas as linhas das duas bases
union(d1,d3)

Base com linhas distintas nas duas bases com setdiff

#Criando uma base com as linhas distintas nas duas bases
setdiff(d1,d3)

Empilhando duas bases uma sobre a outra com rbind

#Empilhando duas bases, uma em cima da outra
rbind(d1,d3)

Empilhando duas bases lado a lado com cbind

#Empilhando duas bases, uma ao lado da outra
cbind(d3,d4)