GET00130 - Métodos Computacionais para Estatística II
Conteúdo da aula
- Revisando importação/exportação de arquivos;
- Revisando manipulação de base de dados;
- Revisando como combinar base de dados.
1 - Revisando conceitos estudados nos tópicos de 1 a 3
Suponha que possuímos uma amostra com dados referentes a vendas de produtos em lojas espalhadas por diversas cidades brasileiras.
Na base Vendas.txt possuímos dados do número de um conjunto de produtos vendidos nos meses de Janeiro a Junho, do número de funcionários, da cidade na qual a loja está localizada e se a loja participou de uma campanha publicitária para esses produtos. Todas as informações estão disponíveis para os anos de 2019 e 2020. Foi usado a codificação 999 para indicar valores faltantes. Na importação da base, trate a variável cod_loja como um character. Caso o número de funcionários seja 0, considere essa informação como NA.
Atividade: Importe o arquivo Vendas.txt de modo que o objeto criado seja um tibble. Armazene em um objeto chamado base_com
#Visualizando o objeto base_geral
base_com# A tibble: 400 x 12
cod_loja cidade campanha ano venda_JAN venda_FEV venda_MAR venda_ABR
<chr> <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
1 5654 Niterói 0 2019 73 96 48 59
2 5654 Niterói 1 2020 76 103 56 61
3 23029 Belo Horizon… 0 2019 78 104 58 61
4 23029 Belo Horizon… 1 2020 79 104 59 62
5 26994 São Gonçalo 0 2019 79 107 61 62
6 26994 São Gonçalo 0 2020 80 107 63 62
7 23507 São Gonçalo 1 2019 80 109 63 64
8 23507 São Gonçalo 0 2020 82 110 63 64
9 38465 Cabo Frio 1 2019 82 111 64 64
10 38465 Cabo Frio 0 2020 83 113 64 65
# … with 390 more rows, and 4 more variables: venda_MAI <dbl>, venda_JUN <dbl>,
# funcionarios <dbl>, porc <dbl>
Fazendo o tratamento da base.
#transformando em factor as variáveis qualitativas
base_com$cidade = factor(base_com$cidade)
base_com$campanha = factor(base_com$campanha,
labels = c("Não","Sim"))
#transformando o 0 em NA na variável número de funcionários
base_com$funcionarios = na_if(base_com$funcionarios, 0)
#Visualizando os objetos
base_com# A tibble: 400 x 12
cod_loja cidade campanha ano venda_JAN venda_FEV venda_MAR venda_ABR
<chr> <fct> <fct> <dbl> <dbl> <dbl> <dbl> <dbl>
1 5654 Niterói Não 2019 73 96 48 59
2 5654 Niterói Sim 2020 76 103 56 61
3 23029 Belo Horizon… Não 2019 78 104 58 61
4 23029 Belo Horizon… Sim 2020 79 104 59 62
5 26994 São Gonçalo Não 2019 79 107 61 62
6 26994 São Gonçalo Não 2020 80 107 63 62
7 23507 São Gonçalo Sim 2019 80 109 63 64
8 23507 São Gonçalo Não 2020 82 110 63 64
9 38465 Cabo Frio Sim 2019 82 111 64 64
10 38465 Cabo Frio Não 2020 83 113 64 65
# … with 390 more rows, and 4 more variables: venda_MAI <dbl>, venda_JUN <dbl>,
# funcionarios <dbl>, porc <dbl>
Suponha que queremos acrescentar na base completa a variável venda_trim_1, que representa a venda no 1o trimestre para cada loja. Como obtemos essa variável?
#Acrescentando a variavel na base
base_com = base_com |>
mutate(venda_trim_1 = venda_JAN + venda_FEV + venda_MAR)
#Visualizando o objeto
base_com# A tibble: 400 x 13
cod_loja cidade campanha ano venda_JAN venda_FEV venda_MAR venda_ABR
<chr> <fct> <fct> <dbl> <dbl> <dbl> <dbl> <dbl>
1 5654 Niterói Não 2019 73 96 48 59
2 5654 Niterói Sim 2020 76 103 56 61
3 23029 Belo Horizon… Não 2019 78 104 58 61
4 23029 Belo Horizon… Sim 2020 79 104 59 62
5 26994 São Gonçalo Não 2019 79 107 61 62
6 26994 São Gonçalo Não 2020 80 107 63 62
7 23507 São Gonçalo Sim 2019 80 109 63 64
8 23507 São Gonçalo Não 2020 82 110 63 64
9 38465 Cabo Frio Sim 2019 82 111 64 64
10 38465 Cabo Frio Não 2020 83 113 64 65
# … with 390 more rows, and 5 more variables: venda_MAI <dbl>, venda_JUN <dbl>,
# funcionarios <dbl>, porc <dbl>, venda_trim_1 <dbl>
Se desejamos exportar o arquivo com o menor tamanho possível, podemos usar a extensão prprópria do R.
#Acrescentando a variavel na base
write_rds(x = base_com,
path = "base modificada.rds",
compress = "gz")Atividade: Crie um objeto chamado base2020 que contenha somente as informações do ano de 2020, contendo as variáveis código da loja, cidade, todas que iniciam com venda e a venda_1_sem.
#Visualizando o objeto
base2020# A tibble: 200 x 10
cod_loja venda_JAN venda_FEV venda_MAR venda_ABR venda_MAI venda_JUN
<chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
1 5654 76 103 56 61 45 78
2 23029 79 104 59 62 46 82
3 26994 80 107 63 62 46 82
4 23507 82 110 63 64 48 84
5 38465 83 113 64 65 49 85
6 33280 84 114 66 66 49 85
7 17506 85 114 66 67 49 86
8 6484 85 114 66 67 50 87
9 33668 86 115 68 68 51 87
10 39292 86 115 68 69 52 88
# … with 190 more rows, and 3 more variables: venda_trim_1 <dbl>,
# venda_trim_1_alt <dbl>, venda_1_sem <dbl>
Suponha que desejamos calcular o número médio de produtos vendidos nas lojas em Janeiro por cidade e o número de lojas por cidade no ano de 2019.
#Obtendo as medidas solicitadas
resultado_1 = base_com |>
filter(ano == 2019) |>
group_by(cidade) |>
summarise(media = mean(venda_JAN, na.rm = TRUE),
n = n())
#Visualizando o objeto
resultado_1# A tibble: 7 x 3
cidade media n
<fct> <dbl> <int>
1 Belo Horizonte 99.5 24
2 Cabo Frio 94.8 23
3 Macaé 99.3 33
4 Niterói 100. 28
5 Rio de Janeiro 100. 30
6 São Gonçalo 99.1 37
7 São Paulo 102. 25
Vamos agora tentar fazer algo mais elaborado. Suponha que desejamos calcular a média, a mediana e o desvio-padrão do número de produtos vendidos nos meses do primeiro semestre por cidade no ano de 2019.
Para realizar tal procedimento, precisaremos da função sumarise_at.
Principais argumentos da função sumarise_at:
- .tbl - o tibble que contém as variáveis;
- .vars - as variáveis que serão utilizadas nas funções;
- .fun - as funções que serão aplicadas as variáveis que foram indicadas em .vars;
- na.rm - variável lógica que indica que os na devem ser removidos (default = TRUE).
#Obtendo as medidas solicitadas
resultado_2 = base_com |>
filter(ano == 2019) |>
group_by(cidade) |>
summarise_at(.vars = vars(venda_JAN:venda_JUN),
.funs = list(media = mean,
mediana = median,
desvio = sd),
na.rm = TRUE)
#Visualizando o objeto
resultado_2# A tibble: 7 x 19
cidade venda_JAN_media venda_FEV_media venda_MAR_media venda_ABR_media
<fct> <dbl> <dbl> <dbl> <dbl>
1 Belo Horizonte 99.5 118. 68.8 53.0
2 Cabo Frio 94.8 113. 65.0 48.7
3 Macaé 99.3 119. 69.4 54.1
4 Niterói 100. 124. 74.1 65.1
5 Rio de Janeiro 100. 120. 70.2 55.3
6 São Gonçalo 99.1 118. 69.4 54.3
7 São Paulo 102. 120. 70.5 53.4
# … with 14 more variables: venda_MAI_media <dbl>, venda_JUN_media <dbl>,
# venda_JAN_mediana <dbl>, venda_FEV_mediana <dbl>, venda_MAR_mediana <dbl>,
# venda_ABR_mediana <dbl>, venda_MAI_mediana <dbl>, venda_JUN_mediana <dbl>,
# venda_JAN_desvio <dbl>, venda_FEV_desvio <dbl>, venda_MAR_desvio <dbl>,
# venda_ABR_desvio <dbl>, venda_MAI_desvio <dbl>, venda_JUN_desvio <dbl>
Atividade: Calcule o número de lojas e o número total de produtos vendidos em janeiro considerando a cidade da loja, se participaram da campanha e o ano da venda.
#Visualizando o objeto
resultado_3# A tibble: 28 x 5
# Groups: cidade, ano [14]
cidade ano campanha num_lojas total_prod
<fct> <dbl> <fct> <int> <dbl>
1 Belo Horizonte 2019 Não 12 1206
2 Belo Horizonte 2019 Sim 12 1183
3 Belo Horizonte 2020 Não 10 984
4 Belo Horizonte 2020 Sim 14 1412
5 Cabo Frio 2019 Não 11 1055
6 Cabo Frio 2019 Sim 12 1125
7 Cabo Frio 2020 Não 8 735
8 Cabo Frio 2020 Sim 15 1452
9 Macaé 2019 Não 18 1770
10 Macaé 2019 Sim 15 1507
# … with 18 more rows
Atividade: Importe a planilha 2020 do arquivo socio.xlsx de modo que o objeto criado seja um tibble. Armazene em um objeto chamado base_socio. Garanta que a variável matricula será importada como um character.
#Visualizando o objeto base_socio
base_socio# A tibble: 300 × 4
matricula sexo idade escolaridade
<chr> <chr> <dbl> <dbl>
1 4046 M 43 3
2 8902 F 60 2
3 9922 M 35 1
4 5634 M 40 3
5 9378 M 42 2
6 9275 F 23 2
7 7860 M 39 1
8 2674 M 41 1
9 3253 F 39 3
10 4867 F 51 1
# … with 290 more rows
Transforme em fator as variáveis qualitativas da base.
#Visualizando os objetos
base_socio# A tibble: 300 × 4
matricula sexo idade escolaridade
<chr> <fct> <dbl> <ord>
1 4046 M 43 Superior
2 8902 F 60 Médio
3 9922 M 35 Fundamental
4 5634 M 40 Superior
5 9378 M 42 Médio
6 9275 F 23 Médio
7 7860 M 39 Fundamental
8 2674 M 41 Fundamental
9 3253 F 39 Superior
10 4867 F 51 Fundamental
# … with 290 more rows