Hinzufügen und Sortieren
Teil des Abschnitts Logik und Ablaufsteuerung der R-Journey von Coddy. Lektion 45 von 64.
Die Zuweisung zu einem neuen Spaltennamen fügt die Spalte hinzu. Arithmetik zwischen Spalten funktioniert zeilenweise, wie jede Vektor-Arithmetik:
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)Ausgabe:
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), ] sortiert die Zeilen nach einer Spalte. Die Zeilennummern auf der linken Seite bleiben den ursprünglichen Zeilen zugeordnet. Verwende ein Minuszeichen oder decreasing = TRUE für eine Sortierung von hoch nach niedrig sowie ein zweites Kriterium bei Gleichständen:
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")])Ausgabe:
item total
2 jam 12.5
3 oil 9.0
1 tea 8.0Eine neue Spalte kann aus anderen Spalten erstellten Text enthalten. sprintf() funktioniert jeweils mit ganzen Spalten:
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)Ausgabe:
[1] "2 x tea" "5 x jam"rbind() fügt eine Zeile aus einem Data Frame mit einer Zeile und denselben Spalten hinzu, und head(df, n) behält die ersten n Zeilen bei:
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))Ausgabe:
[1] 3
item qty
2 jam 5
1 tea 2Aufgabe
EinfachVervollständige order_totals(df). df enthält die Spalten item, qty und price. Füge eine total-Spalte hinzu (Menge mal Preis), sortiere die Zeilen nach total von hoch nach niedrig (Elemente mit gleichen totals alphabetisch) und gib eine Zeile pro Datensatz zurück: jam: 12.50, wobei total auf zwei Dezimalstellen gerundet wird.
Der bereitgestellte Code liest die Tabelle mit read.csv(text = input) aus der Eingabe: Die erste Zeile enthält die Spaltennamen und jede folgende Zeile ist eine Zeile, wobei die Werte durch Kommas getrennt sind. Der Code gibt jede zurückgegebene Zeile aus.
Probier es selbst
order_totals <- function(df) {
# Schreibe deinen Code hier
character(0)
}
# Mitgelieferter Ein-/Ausgabe-Code: belasse ihn wie er ist
input <- suppressWarnings(readLines(file("stdin")))
df <- read.csv(text = input)
cat(order_totals(df), 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