Spalten und Zeilen
Teil des Abschnitts Logik und Ablaufsteuerung der R-Journey von Coddy. Lektion 43 von 64.
df$col und df[["col"]] geben eine Spalte als einfachen Vektor zurück, sodass jede Vektorfunktion darauf angewendet werden kann. [[ ]] akzeptiert einen in einer Variable gespeicherten Spaltennamen:
people <- data.frame(
name = c("ada", "bo", "cy"),
age = c(36, 22, 41),
city = c("london", "paris", "rome")
)
print(people$age)
print(mean(people$age))
col <- "city"
print(people[[col]])Ausgabe:
[1] 36 22 41
[1] 33
[1] "london" "paris" "rome" Eckige Klammern verwenden [row, column], wie bei einer Matrix. Eine leere Seite wählt alles aus, und Spalten können nach Namen ausgewählt werden:
people <- data.frame(
name = c("ada", "bo", "cy"),
age = c(36, 22, 41),
city = c("london", "paris", "rome")
)
print(people[2, ])
print(people[, c("name", "city")])Ausgabe:
name age city
2 bo 22 paris
name city
1 ada london
2 bo paris
3 cy romeEine Zelle ist df[row, column], und eine Zuweisung an sie ändert den Wert. Die Zuweisung an eine ganze Spalte funktioniert genauso:
people <- data.frame(
name = c("ada", "bo", "cy"),
age = c(36, 22, 41),
city = c("london", "paris", "rome")
)
print(people[3, "age"])
people[3, "age"] <- 42
people$city <- toupper(people$city)
print(people)Ausgabe:
[1] 41
name age city
1 ada 36 LONDON
2 bo 22 PARIS
3 cy 42 ROMEUm die Zeilen eine nach der anderen durchzugehen, iteriere über seq_len(nrow(df)) und lies jede Zelle mit df[i, "col"] oder df$col[i] aus:
people <- data.frame(
name = c("ada", "bo", "cy"),
age = c(36, 22, 41),
city = c("london", "paris", "rome")
)
for (i in seq_len(nrow(people))) {
cat(people$name[i], "lives in", people[i, "city"], "\n")
}Ausgabe:
ada lives in london
bo lives in paris
cy lives in rome Aufgabe
EinfachVervollständige person_card(df, i). Gib für jede Spalte der Zeile i eine Zeile im Format name: bo zurück, mit dem Spaltennamen und dem Wert in dieser Zeile, in der Reihenfolge der Spalten.
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 mit durch Kommas getrennten Werten. Die letzte Eingabezeile enthält i, und der Code gibt jede zurückgegebene Zeile aus.
Probier es selbst
person_card <- function(df, i) {
# Schreibe deinen Code hier
character(0)
}
# Bereitgestellter Ein-/Ausgabecode: belasse ihn wie er ist
input <- suppressWarnings(readLines(file("stdin")))
df <- read.csv(text = input[-length(input)])
i <- as.numeric(input[length(input)])
cat(person_card(df, i), 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