Importante

Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!

1
resposta

[Projeto] Mão na Massa : Avaliando Categorias — Cálculo das Médias e Tratamento de Empate

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.

1 resposta

Oi, Marcus. Tudo bem com você?

Sua resolução para a atividade ficou excelente. Você seguiu todos os passos pedidos, convertendo os fatores para numérico com as.numeric e arredondando os valores das médias de pontualidade, qualidade da comida e atendimento com a função round de forma bem precisa.

O destaque da sua solução foi justamente ter pensado na limitação das funções que retornam apenas um índice. Ao aplicar a filtragem vetorial com max e min diretamente nos nomes dos vetores, você garantiu que cenários com empates sejam tratados de forma correta e sem perda de dados.

Parabéns pelo excelente trabalho no exercício e por compartilhar sua lógica aqui. Continue assim e lembre-se de que o fórum está sempre à disposição para o que precisar.

Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!