Vergleich zweier Tabellen

Allgemeine Statistik mit R, die Test-Methode ist noch nicht bekannt, ich habe noch keinen Plan!

Moderatoren: EDi, jogo

Antworten
Isegrimm
Beiträge: 14
Registriert: Mo Mär 16, 2020 9:52 am

Vergleich zweier Tabellen

Beitrag von Isegrimm »

Hallo zusammen ...

Nachdem ihr mir in einem anderen Thread bereits sowas von geholfen habt (bin wirklich begeistert) ... hätte ich noch eine Frage:

Gibt es in "R" die Möglichkeit zwei Tabellen zu vergleichen und Daten aus der einen in eine andere zu überführen, wenn ein Merkmal übereinstimmt? Das Pendant hierzu wäre in Excel die "SVERWEIS"-Funktion.

Konkret:

Ich habe eine Tabelle mit Namen und Bewertungen ("Bewertungen"). In einer anderen Tabelle ("Dozenten") habe ich ebenfalls die Namen und eine ID. In beiden Tabellen sind die Namen eindeutig, da sie aus einer Kombination der ersten vier Buchstaben des Nach- und den ersten vier Buchstaben des Vornamens bestehen, Dubletten sind also ausgeschlossen.

Um die erste Tabelle anonym statistisch auswerten zu können, möchte ich eine Spalte anfügen: "Bewertungen$ID". Vor der statistischen Auswertung soll eine Funktion über die erste Tabelle laufen, anhand des Namens in der zweiten Tabelle hierzu die passende ID rausfischen und in die neue Spalte "Bewertungen$ID" schreiben, woraufhin ich dann diese Spalte als x-Achsen-Werte in einem Plot ausgeben kann.

Wie gesagt, mit Excel könnte ich die erste Tabelle natürlich vorher entsprechend fit machen ... aber ich will mir diesen "Umweg" - wenn möglich - ersparen.

Grüsse

Stefan
bigben
Beiträge: 2894
Registriert: Mi Okt 12, 2016 9:09 am

Re: Vergleich zweier Tabellen

Beitrag von bigben »

Hallo Stefan,

ich denke, die Funktion merge() macht, was Du brauchst:

Code: Alles auswählen

eine <- data.frame(name = c("Anton", "Berta", "Cecilie", "Denise", "Erna"),
                   bewertung = c(1, 2, 3, 4, 5))

andere <- data.frame(name = c("Erna", "Denise", "Anton", "Berta", "Cecilie"),
                      id = c("E", "D", "A", "B", "C"))

print(eine)
#>      name bewertung
#> 1   Anton         1
#> 2   Berta         2
#> 3 Cecilie         3
#> 4  Denise         4
#> 5    Erna         5
print(andere)
#>      name id
#> 1    Erna  E
#> 2  Denise  D
#> 3   Anton  A
#> 4   Berta  B
#> 5 Cecilie  C

gemeinsam <- merge(eine, andere, by = "name")

print(gemeinsam)
#>      name bewertung id
#> 1   Anton         1  A
#> 2   Berta         2  B
#> 3 Cecilie         3  C
#> 4  Denise         4  D
#> 5    Erna         5  E
Grafik danach beispielsweise mit

Code: Alles auswählen

library(ggplot2)
ggplot(gemeinsam) +
  geom_point(aes(x = id, y = bewertung), size = 3)

Nun bist Du von Athomas ja schon mit der Begeisterung für Datatables angesteckt worden und da gibt es (natürlich) einen ganz eigenen Weg, den Du aber leicht findest, wenn Du " r data.table merge" in eine Suchmaschine Deines Vertrauens tippst.

Einführung für alle drei Varianten von Dataframes:
https://www.infoworld.com/article/22645 ... table.html
Wie gesagt, mit Excel könnte ich die erste Tabelle natürlich vorher entsprechend fit machen ... aber ich will mir diesen "Umweg" - wenn möglich - ersparen.
Die einzig richtige Entscheidung.

LG,
Bernhard
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
Antworten