Dodawanie i sortowanie
Część sekcji Logika i przepływ sterowania ścieżki R w Coddy. Lekcja 45 z 64.
Przypisanie do nowej nazwy kolumny dodaje kolumnę. Działania arytmetyczne między kolumnami są wykonywane wiersz po wierszu, tak jak działania arytmetyczne na dowolnych wektorach:
orders <- data.frame(item = c("tea", "jam", "oil"), qty = c(2, 5, 1), price = c(4, 2.5, 9))
orders$total <- orders$qty * orders$price
print(orders)Wynik:
item qty price total
1 tea 2 4.0 8.0
2 jam 5 2.5 12.5
3 oil 1 9.0 9.0df[order(df$col), ] sortuje wiersze według kolumny. Numery wierszy po lewej pozostają przypisane do oryginalnych wierszy. Użyj znaku minus lub decreasing = TRUE, aby sortować od wartości wysokich do niskich, a w przypadku remisów użyj drugiego klucza:
orders <- data.frame(item = c("tea", "jam", "oil"), qty = c(2, 5, 1), price = c(4, 2.5, 9))
orders$total <- orders$qty * orders$price
print(orders[order(-orders$total, orders$item), c("item", "total")])Wynik:
item total
2 jam 12.5
3 oil 9.0
1 tea 8.0Nowa kolumna może zawierać tekst utworzony na podstawie innych kolumn. sprintf() działa jednocześnie na całych kolumnach:
orders <- data.frame(item = c("tea", "jam"), qty = c(2, 5), price = c(4, 2.5))
orders$label <- sprintf("%d x %s", orders$qty, orders$item)
print(orders$label)Wynik:
[1] "2 x tea" "5 x jam"rbind() dodaje wiersz z jednorzędowej ramki danych o tych samych kolumnach, a head(df, n) zachowuje pierwsze n wierszy:
orders <- data.frame(item = c("tea", "jam"), qty = c(2, 5))
orders <- rbind(orders, data.frame(item = "oil", qty = 1))
print(nrow(orders))
print(head(orders[order(-orders$qty), ], 2))Wynik:
[1] 3
item qty
2 jam 5
1 tea 2Wyzwanie
ŁatwyUzupełnij order_totals(df). df zawiera kolumny item, qty i price. Dodaj kolumnę total (ilość pomnożona przez cenę), posortuj wiersze według wartości total od największej do najmniejszej (elementy o równych wartościach total alfabetycznie) i zwróć jeden wiersz na każdy wiersz tabeli: jam: 12.50, z wartością total zaokrągloną do dwóch miejsc po przecinku.
Dostarczony kod odczytuje tabelę z danych wejściowych za pomocą read.csv(text = input): pierwszy wiersz zawiera nazwy kolumn, a każdy kolejny wiersz to jeden wiersz tabeli, z wartościami oddzielonymi przecinkami. Kod wypisuje każdy zwrócony wiersz.
Spróbuj swoich sił
order_totals <- function(df) {
# Wpisz tutaj swój kod
character(0)
}
# Dostarczony kod wejścia/wyjścia: pozostaw go bez zmian
input <- suppressWarnings(readLines(file("stdin")))
df <- read.csv(text = input)
cat(order_totals(df), 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