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 3sort(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] 2Um 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] 3Desafio
FácilComplete 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")
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
1Strings em Profundidade
Substrings com substr()Formatação com sprintf()Dividindo e UnindoPesquisando StringsSubstituindo TextoRecapitulação - Criador de Nome de Usuário4Matrizes
Criando MatrizesIndexando MatrizesResumos de Linhas e ColunasAritmética de MatrizesRecapitulação - Tabela de Assentos10Fluxo de Controle Avançado
A Função switch()ifelse() Vetorizadorepeat e breakFunções RecursivasRevisão — Classificador de Notas2Consultas de Chave-Valor
Consultas em Vetores NomeadosVerificando ChavesAdicionando e Removendo ChavesPercorrendo NomesRecapitulação - Mesa de Ações5Projeto - Boletim de Notas
Adicionando AlunosRegistrando Notas3Conjuntos e Contagem
Valores ÚnicosOperações com ConjuntosTestes de PertinênciaContagem com table()Recapitulação - Convidados do Evento6Funções como Valores
Funções AnônimasPassando FunçõesRetornando FunçõesClosures com EstadoRecapitulação - Regras de Desconto9Data Frames
Criando Data FramesColunas e LinhasFiltrando LinhasAdicionando e OrdenandoRecapitulação - Relatório de Vendas12Projeto - Rastreador de Despesas
Registro de DespesasGastos TotaisPratique por conta própria: Compilador de R online