Tratando as variáveis qualitativas
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 3 linhas aleatoriamente
sample_n(base,3)
# excluindo linhas iguais
base2=distinct(base)
# excluindo linhas que possuem Microrregiao igual
base3=distinct(base,Microrregiao)
# excluindo linhas que possuem idade e escolatridade iguais
base4=distinct(base,idade, escolaridade)
# 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().
# reorganiza o data frame, iniciando com a variável Microrregiao e depois as demais
base8=select(base,Microrregiao,everything())
# Renomeando a variável Microrregiao para micro
base9 = rename(base8,Micro = Microrregiao)
# 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 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 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) )
# Calculando a media e a mediana da variável idade
summarise(base, media.idade = mean(idade), mediana.idade = median(idade))
# 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())
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))
base20 = base16 %>%
rowwise() %>% mutate(Max= max(idade:idade2)) %>%
select(idade,idade2,Max)
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:
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"))
# 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"))
# 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")
# 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")
# 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")
# 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")
# 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")
#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))
#Criando uma base com as linhas comus as duas bases
intersect(d1,d2)
#Criando uma base unindo todas as linhas das duas bases
union(d1,d3)
#Criando uma base com as linhas distintas nas duas bases
setdiff(d1,d3)
#Empilhando duas bases, uma em cima da outra
rbind(d1,d3)
#Empilhando duas bases, uma ao lado da outra
cbind(d3,d4)