Exercício - Semana 2

Manipulação de Dados

Author

Luana Poças

Chegou a hora de fixar o nosso aprendizado das funções aprendidas em aula do tidyr e do dplyr!

Para isso, vamos usar um conjunto de dados do tidytuesday

E os dados escolhidos por mim foram o de produção de ovos nos EUA

dados <- readr::read_csv('https://raw.githubusercontent.com/rfordatascience/tidytuesday/master/data/2023/2023-04-11/egg-production.csv')
Rows: 220 Columns: 6
── Column specification ────────────────────────────────────────────────────────
Delimiter: ","
chr  (3): prod_type, prod_process, source
dbl  (2): n_hens, n_eggs
date (1): observed_month

ℹ Use `spec()` to retrieve the full column specification for this data.
ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.

Então a primira coisa que vocês terão que fazer é ler sobre os dados no link acima, baixar os dados de acordo com as instruções, carregar o tidyverse e seguir as orientações abaixo!

Só vamos usar UM conjunto de dados

Só utilizar os dados de eggproduction egg <- readr::read_csv(‘https://raw.githubusercontent.com/rfordatascience/tidytuesday/master/data/2023/2023-04-11/egg-production.csv’)

Respostas

Exercício 1 - removendo colunas de um conjunto de dados

Remover a última coluna do dataset (a coluna chamada source)

library(dplyr)

Anexando pacote: 'dplyr'
Os seguintes objetos são mascarados por 'package:stats':

    filter, lag
Os seguintes objetos são mascarados por 'package:base':

    intersect, setdiff, setequal, union
clean <- select(dados,-source)

Exercício 2 - selecionando variáveis numéricas de um conjunto de dados

Selecionar apenas as variáveis numéricas

num <- select_if(dados,is.numeric)

Exercício 3 - criando subconjuntos a partir de um conjunto de dados

Criar um dataset só com hatching e outro dataset apenas com table eggs

 hatching <- slice(dados, 1:55)

table_eggs <- slice(dados, 56:220)

filter(dados, prod_type == "hatching eggs")
# A tibble: 55 × 6
   observed_month prod_type     prod_process   n_hens     n_eggs source         
   <date>         <chr>         <chr>           <dbl>      <dbl> <chr>          
 1 2016-07-31     hatching eggs all          57975000 1147000000 ChicEggs-09-23…
 2 2016-08-31     hatching eggs all          57595000 1142700000 ChicEggs-10-21…
 3 2016-09-30     hatching eggs all          57161000 1093300000 ChicEggs-11-22…
 4 2016-10-31     hatching eggs all          56857000 1126700000 ChicEggs-12-23…
 5 2016-11-30     hatching eggs all          57116000 1096600000 ChicEggs-01-24…
 6 2016-12-31     hatching eggs all          57750000 1132900000 ChicEggs-02-28…
 7 2017-01-31     hatching eggs all          57991000 1123400000 ChicEggs-03-21…
 8 2017-02-28     hatching eggs all          58286000 1014500000 ChicEggs-04-21…
 9 2017-03-31     hatching eggs all          58735000 1128500000 ChicEggs-05-22…
10 2017-04-30     hatching eggs all          59072000 1097200000 ChicEggs-06-23…
# ℹ 45 more rows
filter(dados, prod_type != "hatching eggs")
# A tibble: 165 × 6
   observed_month prod_type  prod_process    n_hens     n_eggs source           
   <date>         <chr>      <chr>            <dbl>      <dbl> <chr>            
 1 2016-07-31     table eggs all          299669000 7350500000 ChicEggs-09-23-2…
 2 2016-08-31     table eggs all          300917000 7409000000 ChicEggs-10-21-2…
 3 2016-09-30     table eggs all          303270000 7204200000 ChicEggs-11-22-2…
 4 2016-10-31     table eggs all          305852000 7534700000 ChicEggs-12-23-2…
 5 2016-11-30     table eggs all          310728000 7468500000 ChicEggs-01-24-2…
 6 2016-12-31     table eggs all          318820000 7950400000 ChicEggs-02-28-2…
 7 2017-01-31     table eggs all          318109000 7903500000 ChicEggs-03-21-2…
 8 2017-02-28     table eggs all          316807000 7079800000 ChicEggs-04-21-2…
 9 2017-03-31     table eggs all          316147000 7842000000 ChicEggs-05-22-2…
10 2017-04-30     table eggs all          314918000 7545900000 ChicEggs-06-23-2…
# ℹ 155 more rows

Exercício 4 - criando subconjuntos a partir de fatores específicos dentro do conjunto de dados

Criar um dataset só com table eggs e todos os processos (all)

table_eggs2 <- filter(table_eggs, prod_process == "all")

Exercício 5 - mudando nome das variáveis

Mudar os nomes das variáveis para português

new_names <- rename(dados,mes_observado = observed_month,tipo_prod = prod_type, processo_prod = prod_process, n_galinhas = n_hens,
                    n_ovos = n_eggs, fonte = source)

Exercício 6 - mudando nomes de fatores dentro de variáveis específicas

Mudar os nomes dos fatores para português

port_2 <- mutate(new_names,tipo_prod = recode(tipo_prod, `hatching eggs` = "ovos_para_incubação", `table eggs` = "ovos_consumo"))
                 
port_3 <- mutate(port_2, processo_prod =recode(processo_prod, all="gaiolas+livres", "cage-free (non-organic)"="livres: não orgânicos", "cage-free (organic)"="livres: orgânicos"))

Exercício 7 - criando nova variável a partir da combinação de variáveis pré-existentes

Criar uma nova variável chamada ‘produtividade’ com a razão entre número de ovos (n_eggs) e número de galinhas (n_hens)

final<- mutate(new_names, Produtividade = (n_ovos/n_galinhas))

Exercício 8 - criando subconjunto de dados a partir de uma seleção específica das variáveis

Criar um dataset só de produtos cage free e criar novas variáveis separando n_eggs e n_hens por organicos e não orgânicos

library(tidyr)
sep <- dados %>% filter(prod_process !="all") %>% 
  separate(prod_process, into= c("process", "type"), sep=" ") %>% 
pivot_wider(names_from = type, values_from = c(n_hens, n_eggs))

sep2 <- port_3 %>% 
  filter(processo_prod %in% c("livres: não orgânicos", "livres: orgânicos"))%>% 
  separate(processo_prod, into=c("processo", "tipo"), 
           sep=": ") %>% 
  select(-tipo_prod, -fonte) %>% 
  pivot_wider(names_from = tipo,
               values_from= c("n_galinhas", "n_ovos"))

Exercício 9 - combinando duas variáveis numéricas em uma única coluna

Criar uma variável categórica com os fatores n_eggs e n_hens, combinando seus valores em uma única coluna

junto <- dados %>% 
  pivot_longer(cols=c(n_hens, n_eggs), names_to="type", values_to="value")

Exercício 10 - sumarizando dados (média, desvio, etc) de acordo com fatores específicos de cada variável

Faça um sumário dos dados com as médias de n_hens e n_eggs por ano, por produto e por processo

sum <- dados %>% 
  separate(observed_month, into = c("year","month","day"), sep="-") %>% 
  select(-month, -day, -source) %>% 
  group_by(year,prod_type,prod_process) %>% 
  summarise_if(is.numeric, mean)