Neste documento se enocntram feitos os exercícios do capitulo 5 do livro Utilizando a Linguagem R da professora Dra. Luciane Ferreira Alcoforada, com base nas soluções oferecidas no messmo livro.

[2]

library(tidyr)

n <- 20 ; k <- 50

for(i in 1:k) {set.seed(2 * i); assign(paste0("q", i), rbinom(n, 1, p = 0.6))}
q <- paste0("q", 1:50)
prova <- data.frame(aluno = 1:20, q1, q2, q3, q4, q5, q6, q7, q8, q9, q10, q11, q12, q13, q14, q15, q16, q17, q18, q19, q20, q21, q22, q23, q24, q25, q26, q27, q28, q29, q30, q31, q32, q33, q34, q35, q36, q37, q38, q39, q40, q41, q42, q43, q44, q45, q46, q47, q48, q49, q50)
prova
##    aluno q1 q2 q3 q4 q5 q6 q7 q8 q9 q10 q11 q12 q13 q14 q15 q16 q17 q18 q19 q20
## 1      1  1  1  0  1  1  1  1  0  0   0   1   1   1   1   1   1   1   0   1   0
## 2      2  0  1  0  1  1  0  0  1  0   0   1   1   1   1   1   1   0   0   1   0
## 3      3  1  1  1  0  1  0  0  1  0   1   0   0   0   1   1   0   0   0   1   0
## 4      4  1  1  1  0  0  1  1  1  1   1   1   1   0   0   1   0   1   1   1   1
## 5      5  0  0  0  1  1  1  0  0  1   0   0   0   1   1   1   1   1   0   0   1
## 6      6  0  1  0  0  1  1  1  1  1   0   0   0   1   0   1   0   0   1   0   1
## 7      7  1  0  0  1  1  1  0  1  1   1   0   1   0   1   0   0   1   0   1   1
## 8      8  0  0  0  0  1  0  1  0  1   1   0   0   0   0   1   0   0   1   1   1
## 9      9  1  0  1  0  0  1  1  0  1   1   1   0   1   1   0   0   1   1   1   1
## 10    10  1  1  1  0  1  1  1  1  1   1   1   1   0   0   1   1   1   1   0   1
## 11    11  1  0  0  1  0  1  0  1  0   0   0   0   1   0   1   0   1   1   1   1
## 12    12  1  1  0  1  1  0  1  1  0   0   0   1   1   0   1   1   1   0   1   0
## 13    13  0  1  1  1  1  1  1  1  1   1   1   0   1   0   1   0   0   1   0   1
## 14    14  1  0  1  1  1  1  0  0  1   0   0   0   1   0   0   0   1   1   1   1
## 15    15  1  1  0  1  1  1  0  1  0   1   1   1   0   1   1   1   1   1   1   0
## 16    16  0  1  1  0  1  1  0  1  1   1   1   0   1   1   0   0   0   1   1   0
## 17    17  0  0  1  1  1  1  1  0  1   1   1   1   1   1   1   0   0   1   0   1
## 18    18  1  1  0  1  1  1  0  0  1   1   1   1   1   0   0   1   1   1   1   0
## 19    19  1  0  1  1  1  0  0  0  0   1   0   1   0   0   0   0   1   1   1   1
## 20    20  1  0  0  1  0  1  1  1  1   0   1   1   0   1   1   0   1   1   0   1
##    q21 q22 q23 q24 q25 q26 q27 q28 q29 q30 q31 q32 q33 q34 q35 q36 q37 q38 q39
## 1    0   0   1   1   0   1   0   1   1   0   0   1   0   0   1   0   0   0   0
## 2    0   1   1   1   1   0   0   0   1   1   1   0   0   0   0   0   1   0   0
## 3    1   1   1   1   1   1   0   1   0   0   0   1   1   1   0   0   1   1   0
## 4    0   1   1   1   0   1   1   0   0   0   0   0   1   0   1   0   0   1   0
## 5    0   1   1   1   1   0   1   1   0   1   1   1   0   1   0   1   0   1   0
## 6    1   1   0   1   1   1   0   1   1   1   1   0   1   0   0   0   1   0   1
## 7    0   1   0   0   0   0   0   1   1   1   1   0   1   0   1   0   1   1   1
## 8    1   1   1   1   0   1   0   1   0   0   1   0   0   1   1   0   0   0   1
## 9    0   1   0   0   1   1   0   0   1   1   0   1   1   1   1   0   0   1   1
## 10   0   1   0   1   1   1   0   1   1   0   0   1   0   1   1   0   0   0   1
## 11   1   1   1   0   1   0   1   0   1   1   1   1   1   1   1   0   0   1   0
## 12   0   1   1   1   1   0   0   1   0   1   0   1   1   1   0   0   0   0   1
## 13   0   0   0   0   0   1   1   0   1   0   0   0   1   0   0   1   0   0   1
## 14   1   1   1   1   1   0   1   0   1   1   1   0   0   1   0   1   0   0   0
## 15   1   1   0   1   1   0   1   0   0   0   1   1   0   0   1   0   1   1   1
## 16   0   1   0   0   0   1   1   1   1   0   0   1   1   0   0   0   0   1   0
## 17   0   1   0   0   0   1   0   0   0   1   1   0   1   0   1   1   1   1   1
## 18   1   1   1   0   1   1   1   0   1   1   0   0   1   1   1   1   1   1   0
## 19   1   1   1   1   1   0   0   1   0   0   1   0   1   0   0   1   1   1   1
## 20   1   1   1   1   1   0   1   1   1   1   1   0   1   1   1   1   1   0   1
##    q40 q41 q42 q43 q44 q45 q46 q47 q48 q49 q50
## 1    1   1   0   0   1   1   1   0   1   1   1
## 2    1   1   1   1   1   0   0   1   0   1   1
## 3    0   0   0   0   0   1   1   0   0   1   1
## 4    1   1   0   1   1   0   0   0   1   1   1
## 5    0   1   1   1   0   1   0   1   0   1   1
## 6    1   0   1   0   0   0   0   1   1   1   1
## 7    0   1   1   1   1   1   1   0   0   1   0
## 8    0   1   1   1   0   1   1   0   0   1   1
## 9    1   1   0   0   0   0   1   1   1   0   1
## 10   0   1   1   1   0   1   1   1   1   1   1
## 11   1   1   0   1   1   0   1   1   1   0   0
## 12   1   1   0   1   0   1   1   1   1   0   0
## 13   1   1   0   1   1   0   0   1   0   1   1
## 14   0   0   0   0   1   1   0   1   1   1   1
## 15   1   1   1   1   1   0   1   0   0   1   0
## 16   1   1   1   0   1   1   1   1   0   0   0
## 17   1   1   1   0   1   1   1   0   1   1   1
## 18   1   1   1   1   1   1   1   1   0   1   1
## 19   1   0   1   0   0   0   1   1   1   0   1
## 20   0   1   1   1   0   1   0   1   0   1   0

[3] Organizar os dados do data frame prova em (três) colunas (alunos, questões e acertos).

prova2 <- pivot_longer(prova, cols = q1:q50, names_to = "questoes", values_to = "acerto")
prova2
## # A tibble: 1,000 × 3
##    aluno questoes acerto
##    <int> <chr>     <int>
##  1     1 q1            1
##  2     1 q2            1
##  3     1 q3            0
##  4     1 q4            1
##  5     1 q5            1
##  6     1 q6            1
##  7     1 q7            1
##  8     1 q8            0
##  9     1 q9            0
## 10     1 q10           0
## # … with 990 more rows

[4] Organizar as questões em dois blocos, o primeiro com questões de 1 a 25 e o segundo com questões de 26 a 50.

prova3 <- pivot_longer(prova, cols = q1:q25, names_to = "questoes1", values_to = "acerto1") %>% pivot_longer(prova, cols = q26:q50, names_to = "questoes2", values_to = "acerto2")
prova3
## # A tibble: 12,500 × 5
##    aluno questoes1 acerto1 questoes2 acerto2
##    <int> <chr>       <int> <chr>       <int>
##  1     1 q1              1 q26             1
##  2     1 q1              1 q27             0
##  3     1 q1              1 q28             1
##  4     1 q1              1 q29             1
##  5     1 q1              1 q30             0
##  6     1 q1              1 q31             0
##  7     1 q1              1 q32             1
##  8     1 q1              1 q33             0
##  9     1 q1              1 q34             0
## 10     1 q1              1 q35             1
## # … with 12,490 more rows

[5] Ordenar o data ferame prova de forma crescente de acordo com o número de acertos da questão um.

library(dplyr)
arrange(prova, q1)
##    aluno q1 q2 q3 q4 q5 q6 q7 q8 q9 q10 q11 q12 q13 q14 q15 q16 q17 q18 q19 q20
## 1      2  0  1  0  1  1  0  0  1  0   0   1   1   1   1   1   1   0   0   1   0
## 2      5  0  0  0  1  1  1  0  0  1   0   0   0   1   1   1   1   1   0   0   1
## 3      6  0  1  0  0  1  1  1  1  1   0   0   0   1   0   1   0   0   1   0   1
## 4      8  0  0  0  0  1  0  1  0  1   1   0   0   0   0   1   0   0   1   1   1
## 5     13  0  1  1  1  1  1  1  1  1   1   1   0   1   0   1   0   0   1   0   1
## 6     16  0  1  1  0  1  1  0  1  1   1   1   0   1   1   0   0   0   1   1   0
## 7     17  0  0  1  1  1  1  1  0  1   1   1   1   1   1   1   0   0   1   0   1
## 8      1  1  1  0  1  1  1  1  0  0   0   1   1   1   1   1   1   1   0   1   0
## 9      3  1  1  1  0  1  0  0  1  0   1   0   0   0   1   1   0   0   0   1   0
## 10     4  1  1  1  0  0  1  1  1  1   1   1   1   0   0   1   0   1   1   1   1
## 11     7  1  0  0  1  1  1  0  1  1   1   0   1   0   1   0   0   1   0   1   1
## 12     9  1  0  1  0  0  1  1  0  1   1   1   0   1   1   0   0   1   1   1   1
## 13    10  1  1  1  0  1  1  1  1  1   1   1   1   0   0   1   1   1   1   0   1
## 14    11  1  0  0  1  0  1  0  1  0   0   0   0   1   0   1   0   1   1   1   1
## 15    12  1  1  0  1  1  0  1  1  0   0   0   1   1   0   1   1   1   0   1   0
## 16    14  1  0  1  1  1  1  0  0  1   0   0   0   1   0   0   0   1   1   1   1
## 17    15  1  1  0  1  1  1  0  1  0   1   1   1   0   1   1   1   1   1   1   0
## 18    18  1  1  0  1  1  1  0  0  1   1   1   1   1   0   0   1   1   1   1   0
## 19    19  1  0  1  1  1  0  0  0  0   1   0   1   0   0   0   0   1   1   1   1
## 20    20  1  0  0  1  0  1  1  1  1   0   1   1   0   1   1   0   1   1   0   1
##    q21 q22 q23 q24 q25 q26 q27 q28 q29 q30 q31 q32 q33 q34 q35 q36 q37 q38 q39
## 1    0   1   1   1   1   0   0   0   1   1   1   0   0   0   0   0   1   0   0
## 2    0   1   1   1   1   0   1   1   0   1   1   1   0   1   0   1   0   1   0
## 3    1   1   0   1   1   1   0   1   1   1   1   0   1   0   0   0   1   0   1
## 4    1   1   1   1   0   1   0   1   0   0   1   0   0   1   1   0   0   0   1
## 5    0   0   0   0   0   1   1   0   1   0   0   0   1   0   0   1   0   0   1
## 6    0   1   0   0   0   1   1   1   1   0   0   1   1   0   0   0   0   1   0
## 7    0   1   0   0   0   1   0   0   0   1   1   0   1   0   1   1   1   1   1
## 8    0   0   1   1   0   1   0   1   1   0   0   1   0   0   1   0   0   0   0
## 9    1   1   1   1   1   1   0   1   0   0   0   1   1   1   0   0   1   1   0
## 10   0   1   1   1   0   1   1   0   0   0   0   0   1   0   1   0   0   1   0
## 11   0   1   0   0   0   0   0   1   1   1   1   0   1   0   1   0   1   1   1
## 12   0   1   0   0   1   1   0   0   1   1   0   1   1   1   1   0   0   1   1
## 13   0   1   0   1   1   1   0   1   1   0   0   1   0   1   1   0   0   0   1
## 14   1   1   1   0   1   0   1   0   1   1   1   1   1   1   1   0   0   1   0
## 15   0   1   1   1   1   0   0   1   0   1   0   1   1   1   0   0   0   0   1
## 16   1   1   1   1   1   0   1   0   1   1   1   0   0   1   0   1   0   0   0
## 17   1   1   0   1   1   0   1   0   0   0   1   1   0   0   1   0   1   1   1
## 18   1   1   1   0   1   1   1   0   1   1   0   0   1   1   1   1   1   1   0
## 19   1   1   1   1   1   0   0   1   0   0   1   0   1   0   0   1   1   1   1
## 20   1   1   1   1   1   0   1   1   1   1   1   0   1   1   1   1   1   0   1
##    q40 q41 q42 q43 q44 q45 q46 q47 q48 q49 q50
## 1    1   1   1   1   1   0   0   1   0   1   1
## 2    0   1   1   1   0   1   0   1   0   1   1
## 3    1   0   1   0   0   0   0   1   1   1   1
## 4    0   1   1   1   0   1   1   0   0   1   1
## 5    1   1   0   1   1   0   0   1   0   1   1
## 6    1   1   1   0   1   1   1   1   0   0   0
## 7    1   1   1   0   1   1   1   0   1   1   1
## 8    1   1   0   0   1   1   1   0   1   1   1
## 9    0   0   0   0   0   1   1   0   0   1   1
## 10   1   1   0   1   1   0   0   0   1   1   1
## 11   0   1   1   1   1   1   1   0   0   1   0
## 12   1   1   0   0   0   0   1   1   1   0   1
## 13   0   1   1   1   0   1   1   1   1   1   1
## 14   1   1   0   1   1   0   1   1   1   0   0
## 15   1   1   0   1   0   1   1   1   1   0   0
## 16   0   0   0   0   1   1   0   1   1   1   1
## 17   1   1   1   1   1   0   1   0   0   1   0
## 18   1   1   1   1   1   1   1   1   0   1   1
## 19   1   0   1   0   0   0   1   1   1   0   1
## 20   0   1   1   1   0   1   0   1   0   1   0

[6] Indicar quais questões o aluno número um acertou.

prova4 <- prova %>%
  gather(questoes, acerto, q1:q50)

prova4 %>% 
  group_by(questoes) %>% 
  filter(aluno == 1) %>%
  filter(acerto == 1)
## # A tibble: 29 × 3
## # Groups:   questoes [29]
##    aluno questoes acerto
##    <int> <chr>     <int>
##  1     1 q1            1
##  2     1 q2            1
##  3     1 q4            1
##  4     1 q5            1
##  5     1 q6            1
##  6     1 q7            1
##  7     1 q11           1
##  8     1 q12           1
##  9     1 q13           1
## 10     1 q14           1
## # … with 19 more rows

[7] Indicar quais questões o aluno número cinco acertou.

prova5 <- prova %>%
  gather(questoes, acerto, q1:q50)

prova5 %>% 
  group_by(questoes) %>% 
  filter(aluno == 5) %>%
  filter(acerto == 1)
## # A tibble: 29 × 3
## # Groups:   questoes [29]
##    aluno questoes acerto
##    <int> <chr>     <int>
##  1     5 q4            1
##  2     5 q5            1
##  3     5 q6            1
##  4     5 q9            1
##  5     5 q13           1
##  6     5 q14           1
##  7     5 q15           1
##  8     5 q16           1
##  9     5 q17           1
## 10     5 q20           1
## # … with 19 more rows

[8] Indicar quais questões o aluno número dez errou.

prova6 <- prova %>%
  gather(questoes, acerto, q1:q50)

prova6 %>% 
  group_by(questoes) %>% 
  filter(aluno == 10) %>%
  filter(acerto == 0)
## # A tibble: 15 × 3
## # Groups:   questoes [15]
##    aluno questoes acerto
##    <int> <chr>     <int>
##  1    10 q4            0
##  2    10 q13           0
##  3    10 q14           0
##  4    10 q19           0
##  5    10 q21           0
##  6    10 q23           0
##  7    10 q27           0
##  8    10 q30           0
##  9    10 q31           0
## 10    10 q33           0
## 11    10 q36           0
## 12    10 q37           0
## 13    10 q38           0
## 14    10 q40           0
## 15    10 q44           0

[9] Indicar quais alunos acertaram a questão número cinco.

prova7 <- prova %>%
  gather(questoes, acerto, q1:q50)

prova7 %>% 
  filter(questoes == "q5") %>%
  filter(acerto == 1)
##    aluno questoes acerto
## 1      1       q5      1
## 2      2       q5      1
## 3      3       q5      1
## 4      5       q5      1
## 5      6       q5      1
## 6      7       q5      1
## 7      8       q5      1
## 8     10       q5      1
## 9     12       q5      1
## 10    13       q5      1
## 11    14       q5      1
## 12    15       q5      1
## 13    16       q5      1
## 14    17       q5      1
## 15    18       q5      1
## 16    19       q5      1

[10] Indicar quais alunos erraram a questão número cinco.

prova8 <- prova %>%
  gather(questoes, acerto, q1:q50)

prova8 %>% 
  filter(questoes == "q5") %>%
  filter(acerto == 0)
##   aluno questoes acerto
## 1     4       q5      0
## 2     9       q5      0
## 3    11       q5      0
## 4    20       q5      0

[11] Indicar o número de acertos em cada questão.

prova9 <- prova %>% 
  gather(questoes, acertos, q1:q50)

prova9 %>% 
  filter(acertos == 1) %>% 
  group_by(questoes) %>% 
  summarise(n())
## # A tibble: 50 × 2
##    questoes `n()`
##    <chr>    <int>
##  1 q1          13
##  2 q10         12
##  3 q11         11
##  4 q12         11
##  5 q13         12
##  6 q14         10
##  7 q15         14
##  8 q16          7
##  9 q17         13
## 10 q18         14
## # … with 40 more rows

[12] Indicar o número de acertos por cada aluno.

prova10 <- prova %>% 
  gather(questoes, acerto, q1:q50)

prova10 %>% 
  filter(acerto == 1) %>% 
  group_by(aluno) %>% 
  summarise(n())
## # A tibble: 20 × 2
##    aluno `n()`
##    <int> <int>
##  1     1    29
##  2     2    27
##  3     3    25
##  4     4    30
##  5     5    29
##  6     6    28
##  7     7    29
##  8     8    25
##  9     9    30
## 10    10    35
## 11    11    30
## 12    12    29
## 13    13    27
## 14    14    28
## 15    15    33
## 16    16    27
## 17    17    33
## 18    18    38
## 19    19    28
## 20    20    35

[13] Indicar o número de acertos por cada aluno na forma do ranking (primeiro ao último).

prova11 <- prova %>% 
  gather(questoes, acerto, q1:q50)

prova11 %>% 
  filter(acerto == 1) %>% 
  group_by(aluno) %>% 
  summarise(n = n()) %>% 
  arrange(desc(n))
## # A tibble: 20 × 2
##    aluno     n
##    <int> <int>
##  1    18    38
##  2    10    35
##  3    20    35
##  4    15    33
##  5    17    33
##  6     4    30
##  7     9    30
##  8    11    30
##  9     1    29
## 10     5    29
## 11     7    29
## 12    12    29
## 13     6    28
## 14    14    28
## 15    19    28
## 16     2    27
## 17    13    27
## 18    16    27
## 19     3    25
## 20     8    25

[14] Indicar o ranking das questões de acordo com o número de acertos (menos acetos as mais acertosd).

prova12 <- prova %>% 
  gather(questoes, acerto, q1:q50)

prova12 %>% 
  filter(acerto == 1) %>% 
  group_by(questoes) %>% 
  summarise(n_acertos = n()) %>% 
  arrange(n_acertos)
## # A tibble: 50 × 2
##    questoes n_acertos
##    <chr>        <int>
##  1 q16              7
##  2 q36              7
##  3 q21              9
##  4 q27              9
##  5 q3               9
##  6 q32              9
##  7 q37              9
##  8 q14             10
##  9 q34             10
## 10 q48             10
## # … with 40 more rows

[15] Crear uma tabela com três colunas: aluno, numero_acertos e notas (numero_acerto/5).

prova13 <- prova %>% 
  gather(questoes, acertos, q1:q50)

tabela <- prova13 %>% 
  filter(acertos == 1) %>% 
  group_by(aluno) %>% 
  summarise(numero_acertos = n()) %>% 
  mutate(nota = numero_acertos/5)

print(tabela, n = 20)
## # A tibble: 20 × 3
##    aluno numero_acertos  nota
##    <int>          <int> <dbl>
##  1     1             29   5.8
##  2     2             27   5.4
##  3     3             25   5  
##  4     4             30   6  
##  5     5             29   5.8
##  6     6             28   5.6
##  7     7             29   5.8
##  8     8             25   5  
##  9     9             30   6  
## 10    10             35   7  
## 11    11             30   6  
## 12    12             29   5.8
## 13    13             27   5.4
## 14    14             28   5.6
## 15    15             33   6.6
## 16    16             27   5.4
## 17    17             33   6.6
## 18    18             38   7.6
## 19    19             28   5.6
## 20    20             35   7

[16] Selecionar da tabela prova as colunas aluno e as colunas de q1 a q5, depois crear uma nova tabela que unas as questões de um a cinco cujos valores ficarão separados por espaço em branco.

prova14 <- prova %>% 
  select(aluno, q1, q2, q3, q4, q5) %>% 
  unite("questoes", c("q1", "q2", "q3", "q4", "q5"), sep = " ")
prova14
##    aluno  questoes
## 1      1 1 1 0 1 1
## 2      2 0 1 0 1 1
## 3      3 1 1 1 0 1
## 4      4 1 1 1 0 0
## 5      5 0 0 0 1 1
## 6      6 0 1 0 0 1
## 7      7 1 0 0 1 1
## 8      8 0 0 0 0 1
## 9      9 1 0 1 0 0
## 10    10 1 1 1 0 1
## 11    11 1 0 0 1 0
## 12    12 1 1 0 1 1
## 13    13 0 1 1 1 1
## 14    14 1 0 1 1 1
## 15    15 1 1 0 1 1
## 16    16 0 1 1 0 1
## 17    17 0 0 1 1 1
## 18    18 1 1 0 1 1
## 19    19 1 0 1 1 1
## 20    20 1 0 0 1 0

[17]

library(tidyverse)

set.seed(1)
x <- tibble(a1 = 1:10, a2 = letters[1:10], a3 = ceiling(runif(10, 1, 5)))
x
## # A tibble: 10 × 3
##       a1 a2       a3
##    <int> <chr> <dbl>
##  1     1 a         3
##  2     2 b         3
##  3     3 c         4
##  4     4 d         5
##  5     5 e         2
##  6     6 f         5
##  7     7 g         5
##  8     8 h         4
##  9     9 i         4
## 10    10 j         2
set.seed(1)
y <- tibble(a1 = rep(2:3, 5), a2 = rep(letters[2:3], 5), a3 = ceiling(runif(10, 2, 4)))
y
## # A tibble: 10 × 3
##       a1 a2       a3
##    <int> <chr> <dbl>
##  1     2 b         3
##  2     3 c         3
##  3     2 b         4
##  4     3 c         4
##  5     2 b         3
##  6     3 c         4
##  7     2 b         4
##  8     3 c         4
##  9     2 b         4
## 10     3 c         3
bind_rows(x, y)
## # A tibble: 20 × 3
##       a1 a2       a3
##    <int> <chr> <dbl>
##  1     1 a         3
##  2     2 b         3
##  3     3 c         4
##  4     4 d         5
##  5     5 e         2
##  6     6 f         5
##  7     7 g         5
##  8     8 h         4
##  9     9 i         4
## 10    10 j         2
## 11     2 b         3
## 12     3 c         3
## 13     2 b         4
## 14     3 c         4
## 15     2 b         3
## 16     3 c         4
## 17     2 b         4
## 18     3 c         4
## 19     2 b         4
## 20     3 c         3
right_join(x, y)
## # A tibble: 10 × 3
##       a1 a2       a3
##    <int> <chr> <dbl>
##  1     2 b         3
##  2     2 b         3
##  3     3 c         4
##  4     3 c         4
##  5     3 c         4
##  6     3 c         3
##  7     2 b         4
##  8     2 b         4
##  9     2 b         4
## 10     3 c         3
intersect(x, y)
## # A tibble: 2 × 3
##      a1 a2       a3
##   <int> <chr> <dbl>
## 1     2 b         3
## 2     3 c         4
union(x, y)
## # A tibble: 12 × 3
##       a1 a2       a3
##    <int> <chr> <dbl>
##  1     1 a         3
##  2     2 b         3
##  3     3 c         4
##  4     4 d         5
##  5     5 e         2
##  6     6 f         5
##  7     7 g         5
##  8     8 h         4
##  9     9 i         4
## 10    10 j         2
## 11     3 c         3
## 12     2 b         4
setequal(bind_rows(x, y), full_join(x, y))
## [1] FALSE
setdiff(left_join(x, y), right_join(x, y))
## # A tibble: 8 × 3
##      a1 a2       a3
##   <int> <chr> <dbl>
## 1     1 a         3
## 2     4 d         5
## 3     5 e         2
## 4     6 f         5
## 5     7 g         5
## 6     8 h         4
## 7     9 i         4
## 8    10 j         2

[18] Três entrevistados listaram 5 marcas de chocolate de sua preferência dentro dez marcas disponíveis. O primeiro mencionou M1, M5, M7, M8 e M2, o segundo mencionou M1, M3, M5, M8 e M7 e o terceiro mencionou apenas 4 marcas M5, M4, M6 e M1. Crie um script para respoder as seguintes perguntas:

[a] Crear uma tabela de dados para representar as respostas na versão longa.

dados_longos <- tibble(entrevistado = rep(1:3, rep(5,3)),
                      resposta = c("M1", "M5", "M7", "M8", "M2",
                                   "M1", "M3", "M5", "M8", "M7",
                                   "M5", "M4", "M6", "M1", NA))
dados_longos
## # A tibble: 15 × 2
##    entrevistado resposta
##           <int> <chr>   
##  1            1 M1      
##  2            1 M5      
##  3            1 M7      
##  4            1 M8      
##  5            1 M2      
##  6            2 M1      
##  7            2 M3      
##  8            2 M5      
##  9            2 M8      
## 10            2 M7      
## 11            3 M5      
## 12            3 M4      
## 13            3 M6      
## 14            3 M1      
## 15            3 <NA>

[b] Crear uma tabela de dados para representar as respostas na versão larga.

dados_largos <- tibble(entrevistado = 1:3,
                       R1 = c("M1", "M1", "M5"),
                       R2 = c("M5", "M3", "M4"),
                       R3 = c("M7", "M5", "M6"),
                       R4 = c("M8", "M8", "M1"),
                       R5 = c("M2", "M7", NA))
dados_largos
## # A tibble: 3 × 6
##   entrevistado R1    R2    R3    R4    R5   
##          <int> <chr> <chr> <chr> <chr> <chr>
## 1            1 M1    M5    M7    M8    M2   
## 2            2 M1    M3    M5    M8    M7   
## 3            3 M5    M4    M6    M1    <NA>

[c] Indicar quantas e quais marcas distintas foram mencionadas pelos entrevistados.

quantos <- dados_longos %>% 
  select(resposta) %>% 
  drop_na %>% 
  n_distinct()
quantos
## [1] 8
quais <- dados_longos %>% 
  drop_na %>% 
  distinct(resposta) %>% 
  arrange(resposta)
quais
## # A tibble: 8 × 1
##   resposta
##   <chr>   
## 1 M1      
## 2 M2      
## 3 M3      
## 4 M4      
## 5 M5      
## 6 M6      
## 7 M7      
## 8 M8

[d] Indicar quantas menções cada marca recebeu, em ordem decrescente de menções.

mencoes <- dados_longos %>% 
  drop_na() %>% 
  group_by(resposta) %>% 
  summarise(n = n()) %>% 
  arrange(-n)
mencoes
## # A tibble: 8 × 2
##   resposta     n
##   <chr>    <int>
## 1 M1           3
## 2 M5           3
## 3 M7           2
## 4 M8           2
## 5 M2           1
## 6 M3           1
## 7 M4           1
## 8 M6           1

Link do livro: https://altabooks.com.br/produto/utilizando-a-linguagem-r/