Zliczanie za pomocą table()
Część sekcji Logika i przepływ sterowania ścieżki R w Coddy. Lekcja 15 z 64.
table(x) zlicza, ile razy występuje każda wartość. Wynik jest nazwany wartościami, posortowanymi alfabetycznie, więc liczba wystąpień danej wartości to t[["value"]]:
votes <- c("tea", "coffee", "tea", "juice", "tea")
t <- table(votes)
print(t[["tea"]])
print(names(t))
print(as.vector(t))Wynik:
[1] 3
[1] "coffee" "juice" "tea"
[1] 1 1 3sort(t, decreasing = TRUE) porządkuje liczebności od największej do najmniejszej. which.max(t) zwraca pozycję największej liczebności; gdy liczebności są takie same, wybiera pierwszą, czyli alfabetycznie pierwszą wartość:
votes <- c("tea", "coffee", "tea", "juice", "coffee")
t <- table(votes)
print(names(t)[which.max(t)])
print(max(t))Wynik:
[1] "coffee"
[1] 2Wartość, która nigdy nie występuje, w ogóle nie znajduje się w tabeli, więc przed jej odczytaniem sprawdź za pomocą %in% names(t):
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")
}Wynik:
A 2
B 1
C 0 table() zlicza również liczby i wartości logiczne. Aby zliczyć pojedynczą wartość, sum(x == value) jest krótsze niż tworzenie tabeli:
rolls <- c(6, 2, 6, 6, 1)
print(sum(rolls == 6))
print(table(rolls > 3)[["TRUE"]])Wynik:
[1] 3
[1] 3Wyzwanie
ŁatwyUzupełnij vote_winner(votes). Zwróć opcję z największą liczbą głosów, a następnie jej liczbę, jak w tea (3 votes). Jeśli opcje mają tyle samo głosów, zwróć tę, która jest pierwsza alfabetycznie.
Dostarczony kod odczytuje głosy jako wiersz rozdzielony przecinkami i wypisuje zwróconą wartość.
Spróbuj swoich sił
vote_winner <- function(votes) {
# Wpisz tutaj swój kod
""
}
# Dostarczony kod wejścia/wyjścia: pozostaw go bez zmian
input <- suppressWarnings(readLines(file("stdin")))
cat(vote_winner(strsplit(input[1], ",")[[1]]), sep = "\n")
Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.
Wszystkie lekcje w sekcji Logika i przepływ sterowania
1Łańcuchy znaków w szczegółach
Podciągi za pomocą substr()Formatowanie za pomocą sprintf()Dzielenie i łączenieWyszukiwanie w łańcuchach znakówZastępowanie tekstuPowtórka – kreator nazwy użytkownika4Macierze
Tworzenie macierzyIndeksowanie macierzyPodsumowania wierszy i kolumnDziałania na macierzachPowtórka – plan miejsc10Zaawansowane sterowanie przepływem
Funkcja switch()Wektorowe ifelse()repeat i breakFunkcje rekurencyjnePodsumowanie — klasyfikator ocen2Wyszukiwanie wartości po kluczach
Wyszukiwanie nazwanych elementów wektoraSprawdzanie kluczyDodawanie i usuwanie kluczyIterowanie po nazwachPowtórzenie — giełda5Projekt — dziennik ocen
Dodawanie uczniówZapisywanie ocen3Zbiory i zliczanie
Unikalne wartościOperacje na zbiorachTesty przynależnościZliczanie za pomocą table()Podsumowanie — goście wydarzenia6Funkcje jako wartości
Funkcje anonimowePrzekazywanie funkcjiZwracanie funkcjiDomknięcia ze stanemPowtórka — reguły rabatowe9Ramki danych
Tworzenie ramek danychKolumny i wierszeFiltrowanie wierszyDodawanie i sortowaniePodsumowanie – raport sprzedaży12Projekt – śledzenie wydatków
Rejestrowanie wydatkówŁączne wydatkiPoćwicz samodzielnie: Kompilator R online