Menu
Coddy logo textTech

Contagem com table()

Parte da seção Lógica e Fluxo do Journey de R da Coddy. Lição 15 de 64.

table(x) conta quantas vezes cada valor ocorre. O resultado é nomeado pelos valores, ordenados alfabeticamente, portanto a contagem de um valor é t[["value"]]:

votes <- c("tea", "coffee", "tea", "juice", "tea")
t <- table(votes)
print(t[["tea"]])
print(names(t))
print(as.vector(t))

Saída:

[1] 3
[1] "coffee" "juice"  "tea"   
[1] 1 1 3

sort(t, decreasing = TRUE) ordena as contagens da maior para a menor. which.max(t) fornece a posição da maior contagem; quando as contagens empatam, ele escolhe a primeira, que é o valor em ordem alfabética:

votes <- c("tea", "coffee", "tea", "juice", "coffee")
t <- table(votes)
print(names(t)[which.max(t)])
print(max(t))

Saída:

[1] "coffee"
[1] 2

Um valor que nunca ocorre não está na tabela, portanto verifique com %in% names(t) antes de lê-lo:

t <- table(c("A", "B", "A"))
for (grade in c("A", "B", "C")) {
  n <- if (grade %in% names(t)) t[[grade]] else 0
  cat(grade, n, "\n")
}

Saída:

A 2 
B 1 
C 0 

table() também conta números e valores lógicos. Para contar um único valor, sum(x == value) é mais curto do que criar uma tabela:

rolls <- c(6, 2, 6, 6, 1)
print(sum(rolls == 6))
print(table(rolls > 3)[["TRUE"]])

Saída:

[1] 3
[1] 3
challenge icon

Desafio

Fácil

Complete vote_winner(votes). Retorne a opção com mais votos seguida pela sua contagem, como em tea (3 votes). Quando houver empate entre as opções, retorne aquela que vem primeiro em ordem alfabética.

O código fornecido lê os votos como uma linha separada por vírgulas e imprime o valor retornado.

Experimente você mesmo

vote_winner <- function(votes) {
  # Escreva seu código aqui
  ""
}

# Código de entrada/saída fornecido: mantenha-o como está
input <- suppressWarnings(readLines(file("stdin")))
cat(vote_winner(strsplit(input[1], ",")[[1]]), sep = "\n")
quiz iconTeste seus conhecimentos

Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.

Todas as lições de Lógica e Fluxo

Pratique por conta própria: Compilador de R online