Exercícios: Semana 2

Author

Fernando

Code
library(tidyverse)
Warning: pacote 'dplyr' foi compilado no R versão 4.4.1
── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
✔ dplyr     1.1.4     ✔ readr     2.1.5
✔ forcats   1.0.0     ✔ stringr   1.5.1
✔ ggplot2   3.5.1     ✔ tibble    3.2.1
✔ lubridate 1.9.3     ✔ tidyr     1.3.1
✔ purrr     1.0.2     
── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
✖ dplyr::filter() masks stats::filter()
✖ dplyr::lag()    masks stats::lag()
ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
Code
library(dplyr)

eggproduction  <- 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.

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

Code
clean <- select(eggproduction, -source)

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

Code
num <- select_if(eggproduction, is.numeric)

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

Code
hatching_eggs <- filter(eggproduction, prod_type == "hatching eggs")
table_eggs <- filter(eggproduction, prod_type == "table eggs")

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

Code
table_all <- eggproduction %>% filter(prod_process == "all" & prod_type == "table eggs")

Exercício 5 - mudando nome das variáveis

Code
novos_nomes <- rename(eggproduction, Mês_observado = observed_month, Tipo_de_produto = prod_type, Processo = 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

Code
eggproduction_factor <- mutate_if(novos_nomes, is.character, as.factor)
str(eggproduction_factor)
tibble [220 × 6] (S3: tbl_df/tbl/data.frame)
 $ Mês_observado  : Date[1:220], format: "2016-07-31" "2016-08-31" ...
 $ Tipo_de_produto: Factor w/ 2 levels "hatching eggs",..: 1 1 1 1 1 1 1 1 1 1 ...
 $ Processo       : Factor w/ 3 levels "all","cage-free (non-organic)",..: 1 1 1 1 1 1 1 1 1 1 ...
 $ n_galinhas     : num [1:220] 57975000 57595000 57161000 56857000 57116000 ...
 $ n_ovos         : num [1:220] 1.15e+09 1.14e+09 1.09e+09 1.13e+09 1.10e+09 ...
 $ fonte          : Factor w/ 108 levels "ChicEggs-01-21-2020.pdf",..: 37 39 46 52 4 8 10 14 19 25 ...
Code
new.rename <- mutate(eggproduction_factor, Tipo_de_produto = recode(Tipo_de_produto, `hatching eggs` = "ovos para chocar", `table eggs` = "ovos de mesa"), Processo = recode(Processo, all = "todos"))

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

Code
final <- mutate(new.rename, Produtividade = (`n_ovos` / `n_galinhas`))

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

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

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

Code
inter_egg <- eggproduction %>% 
  unite("eggs_hens", n_eggs, n_hens, sep = "_")

junto <- eggproduction %>% 
  pivot_longer(cols=starts_with("n"), names_to="type",
                values_to="value")

junto2 <- eggproduction %>% 
pivot_longer(4:5, 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

Code
sum <- eggproduction %>% 
  separate(observed_month, into=c("year", "month", "day"),
           sep = "-") %>% 
  select(-month, -day, -source) %>% 
  group_by(year, prod_type, prod_process) %>% 
  summarise_all(mean)

sum2 <- eggproduction %>% 
  separate(observed_month, into=c("year", "month", "day"), sep = "-") %>% 
  group_by(year, prod_type, prod_process) %>% 
  summarise(Média_ovos = mean(n_eggs),
            Média_galinhas = mean(n_hens))
`summarise()` has grouped output by 'year', 'prod_type'. You can override using
the `.groups` argument.