Zählen mit table()
Teil des Abschnitts Logik und Ablaufsteuerung der R-Journey von Coddy. Lektion 15 von 64.
table(x) zählt, wie oft jeder Wert vorkommt. Das Ergebnis wird nach den Werten benannt, die alphabetisch sortiert sind, sodass die Anzahl eines Werts t[["value"]] lautet:
votes <- c("tea", "coffee", "tea", "juice", "tea")
t <- table(votes)
print(t[["tea"]])
print(names(t))
print(as.vector(t))Ausgabe:
[1] 3
[1] "coffee" "juice" "tea"
[1] 1 1 3sort(t, decreasing = TRUE) ordnet die Zählwerte vom höchsten zum niedrigsten. which.max(t) gibt die Position des größten Zählwerts zurück; bei gleichen Zählwerten wird der erste ausgewählt, also der alphabetisch erste Wert:
votes <- c("tea", "coffee", "tea", "juice", "coffee")
t <- table(votes)
print(names(t)[which.max(t)])
print(max(t))Ausgabe:
[1] "coffee"
[1] 2Ein Wert, der nie vorkommt, ist überhaupt nicht in der Tabelle enthalten. Überprüfe daher mit %in% names(t), bevor du ihn ausliest:
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")
}Ausgabe:
A 2
B 1
C 0 table() zählt auch Zahlen und logische Werte. Um einen einzelnen Wert zu zählen, ist sum(x == value) kürzer, als eine Tabelle zu erstellen:
rolls <- c(6, 2, 6, 6, 1)
print(sum(rolls == 6))
print(table(rolls > 3)[["TRUE"]])Ausgabe:
[1] 3
[1] 3Aufgabe
EinfachVervollständige vote_winner(votes). Gib die Option mit den meisten Stimmen gefolgt von ihrer Anzahl zurück, wie in tea (3 votes). Wenn Optionen gleich viele Stimmen haben, gib diejenige zurück, die alphabetisch zuerst kommt.
Der bereitgestellte Code liest die Stimmen als durch Kommas getrennte Zeile ein und gibt den zurückgegebenen Wert aus.
Probier es selbst
vote_winner <- function(votes) {
# Schreibe deinen Code hier
""
}
# Mitgelieferter Ein-/Ausgabe-Code: belasse ihn wie er ist
input <- suppressWarnings(readLines(file("stdin")))
cat(vote_winner(strsplit(input[1], ",")[[1]]), sep = "\n")
Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Logik und Ablaufsteuerung
1Strings im Detail
Teilstrings mit substr()Formatierung mit sprintf()Aufteilen und VerbindenStrings durchsuchenText ersetzenWiederholung – Benutzernamen-Generator4Matrizen
Matrizen erstellenMatrizen indizierenZusammenfassungen von Zeilen und SpaltenMatrizenarithmetikRückblick – Sitzplan10Fortgeschrittener Kontrollfluss
Die switch()-FunktionVektorisierter ifelse()repeat und breakRekursive FunktionenRückblick – Notenklassifizierung2Schlüssel-Wert-Suchen
Benannte Vektor-SuchenSchlüssel prüfenSchlüssel hinzufügen und entfernenNamen durchlaufenRückblick – Aktienübersicht5Projekt – Notenbuch
Schüler hinzufügenNoten eintragen3Mengen und Zählen
Eindeutige WerteMengenoperationenZugehörigkeitstestsZählen mit table()Rückblick – Gäste einer Veranstaltung6Funktionen als Werte
Anonyme FunktionenFunktionen übergebenFunktionen zurückgebenClosures mit ZustandRückblick – Rabattregeln9Datenrahmen
Datenrahmen erstellenSpalten und ZeilenZeilen filternHinzufügen und SortierenZusammenfassung – Verkaufsbericht12Projekt – Ausgaben-Tracker
Ausgaben erfassenGesamtausgabenÜbe selbstständig: Online-R-Compiler