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/