Realizei o exercício calculando as médias das avaliações de pontualidade, qualidade da comida e atendimento, utilizando as.numeric() para converter os fatores e round() para arredondar os resultados para uma casa decimal.
# Calculando as médias
media_pontualidade <- round(mean(as.numeric(fator_pontualidade)), 1)
media_qualidade <- round(mean(as.numeric(fator_qualidade_comida)), 1)
media_atendimento <- round(mean(as.numeric(fator_atendimento)), 1)
# Criando vetor com as médias
medias <- c(
Pontualidade = media_pontualidade,
Qualidade_da_comida = media_qualidade,
Atendimento = media_atendimento
)
# Categoria(s) com maior média
names(medias[medias == max(medias)])
# Categoria(s) com menor média
names(medias[medias == min(medias)])
Os resultados encontrados foram:
names(medias[medias == max(medias)])
names(medias[medias == min(medias)])
Assim, Qualidade da comida apresentou a maior média, com 3,8.
Já para a menor média ocorreu um empate entre Pontualidade e Atendimento, ambos com 3,6.
Um ponto interessante foi o tratamento desse empate. Poderíamos utilizar which.max() e which.min(), porém essas funções retornariam apenas a primeira ocorrência encontrada.
Por isso, utilizei:
names(medias[medias == max(medias)])
names(medias[medias == min(medias)])
Dessa forma, a solução também funciona quando duas ou mais categorias compartilham a maior ou a menor média.