Conteo con table()
Parte de la sección Lógica y flujo del Journey de R de Coddy. Lección 15 de 64.
table(x) cuenta cuántas veces aparece cada valor. El resultado recibe como nombres los valores, ordenados alfabéticamente, por lo que el recuento de un valor es t[["value"]]:
votes <- c("tea", "coffee", "tea", "juice", "tea")
t <- table(votes)
print(t[["tea"]])
print(names(t))
print(as.vector(t))Salida:
[1] 3
[1] "coffee" "juice" "tea"
[1] 1 1 3sort(t, decreasing = TRUE) ordena los recuentos de mayor a menor. which.max(t) proporciona la posición del recuento más grande; cuando los recuentos empatan, elige el primero, que es el valor que aparece primero alfabéticamente:
votes <- c("tea", "coffee", "tea", "juice", "coffee")
t <- table(votes)
print(names(t)[which.max(t)])
print(max(t))Salida:
[1] "coffee"
[1] 2Un valor que nunca aparece no está en la tabla, así que compruébalo con %in% names(t) antes de leerlo:
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")
}Salida:
A 2
B 1
C 0 table() también cuenta números y valores lógicos. Para contar un único valor, sum(x == value) es más corto que construir una tabla:
rolls <- c(6, 2, 6, 6, 1)
print(sum(rolls == 6))
print(table(rolls > 3)[["TRUE"]])Salida:
[1] 3
[1] 3Desafío
FácilCompleta vote_winner(votes). Devuelve la opción con más votos seguida de su cantidad, como en tea (3 votes). Cuando las opciones empaten, devuelve la que aparece primero alfabéticamente.
El código proporcionado lee los votos como una línea separada por comas e imprime el valor devuelto.
Pruébalo tú mismo
vote_winner <- function(votes) {
# Escribe tu código aquí
""
}
# Código de entrada/salida suministrado: déjalo como está
input <- suppressWarnings(readLines(file("stdin")))
cat(vote_winner(strsplit(input[1], ",")[[1]]), sep = "\n")
Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Todas las lecciones de Lógica y flujo
1Cadenas a fondo
Subcadenas con substr()Formateo con sprintf()Dividir y unirBuscar cadenasReemplazar textoRepaso - Constructor de nombres de usuario4Matrices
Creación de matricesIndexación de matricesResúmenes de filas y columnasAritmética de matricesRepaso: tabla de asientos2Búsquedas clave-valor
Búsquedas en vectores con nombreComprobar clavesAñadir y eliminar clavesRecorrer nombresRepaso: panel bursátil5Proyecto - Libro de calificaciones
Añadir estudiantesRegistrar calificaciones3Conjuntos y conteo
Valores únicosOperaciones con conjuntosPruebas de pertenenciaConteo con table()Repaso: invitados al evento6Funciones como valores
Funciones anónimasPasar funcionesDevolver funcionesClausuras con estadoRepaso: reglas de descuento9Marcos de datos
Creación de marcos de datosColumnas y filasFiltrado de filasAdición y ordenaciónRepaso - Informe de ventas12Proyecto: Rastreador de gastos
Registro de gastosGasto totalPractica por tu cuenta: Compilador de R online