Tabellen zusammenführen in R

Wie rufe ich R-Funktionen auf, wie selektiere ich Daten, ich weiß nicht genau ....

Moderatoren: EDi, jogo

Antworten
Ante
Beiträge: 9
Registriert: Di Apr 25, 2023 10:59 am

Tabellen zusammenführen in R

Beitrag von Ante »

Hallo ,
ich möchte zwei Datensätze zusammenführen und dies anhand von identischen CASE Nummern der Probanden.
Mein Code:
Attention <-merge(Attention_ASQ, Attention_DCS, Attention_UTAUT, by="CASE")

Ich erhalte dann folgende Fehlermeldung: "Error in fix.by(by.x, x) : 'by' muss eine oder mehrere Spalten als Zahlen, Namen oder logische Werte spezifizieren" .

Daraufhin habe ich folgendes ausprobiert (aber es hat dennoch nicht geklappt):

Daten$CASE <- as.numeric(Daten$CASE)
Attention <-merge(Attention_ASQ, Attention_DCS, Attention_UTAUT, by="CASE")

Was mache ich falsch!?
Danke im Voraus für eine Antwort!
Zuletzt geändert von Ante am Di Apr 25, 2023 3:22 pm, insgesamt 1-mal geändert.
bigben
Beiträge: 2778
Registriert: Mi Okt 12, 2016 9:09 am

Re: Datensätze zusammenführen in R

Beitrag von bigben »

Wofür stehen denn Attention_ASQ, Attention_DCS und Attention_UTAUT bzw. Was soll merge() mit Attention_UTAUT anfangen? Es sieht aus, als wolltest Du drei Tabellen zusammenführen.

LG,
Bernhard
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
Ante
Beiträge: 9
Registriert: Di Apr 25, 2023 10:59 am

Re: Datensätze zusammenführen in R

Beitrag von Ante »

Hallo Bernhard,
Diese drei Datensätze/Tabellen die ich erstellt habe (Attention_ASQ, Attention_DCS und Attention_UTAUT) haben alle eine Spalte, die "CASE" heißt und ich möchte diese drei Tabellen hinsichtlich den identischen CASE Nummern zusammenführen, damit identischen Probanden (cases) zusammengeführt werden. Geht dies nicht mit der merge() ?
LG,
Ante
Ante
Beiträge: 9
Registriert: Di Apr 25, 2023 10:59 am

Re: Datensätze zusammenführen in R

Beitrag von Ante »

Ah jetzt da ich ich nur diese beiden Tabellen zusammenführe klappt es.

Code: Alles auswählen

Attention <-merge(Attention_ASQ, Attention_DCS, by="CASE")
Anscheinend kann man nur zwei Tabellen zusammenführen. Außerdem ist mir aufgefallen, dass die Tabelle Attention_UTAUT auch gar keine identischen Cases wie die anderen Tabellen hat. Vielleicht haben diese zwei Gründe dazu geführt, dass es nicht geklappt hat und folgende Fehlermeldung erschien: "Error in fix.by(by.x, x) :
'by' muss eine oder mehrere Spalten als Zahlen, Namen oder logische Werte spezifizieren".

LG,
Ante
bigben
Beiträge: 2778
Registriert: Mi Okt 12, 2016 9:09 am

Re: Datensätze zusammenführen in R

Beitrag von bigben »

Du hattest oben geschrieben "ich möchte zwei Datensätze zusammenführen".

Merge führt zwei Tabellen zusammen und wenn man mehr Tabellen braucht, muss man das nacheinander machen. Das dritte unbenannte Argument hat merge wohl als by oder als by.x interpretiert und das machte dann keinen Sinn.

LG, Bernhard
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
Athomas
Beiträge: 769
Registriert: Mo Feb 26, 2018 8:19 pm

Re: Datensätze zusammenführen in R

Beitrag von Athomas »

bigben hat geschrieben: Di Apr 25, 2023 2:36 pm Merge führt zwei Tabellen zusammen und wenn man mehr Tabellen braucht, muss man das nacheinander machen.
Und weil mir genau das bei mehreren Tabellen ziemlich auf den Senkel geht, mache ich das gerne nach dem folgenden Schema:

Code: Alles auswählen

library(data.table)

DT1 <- data.table(Gruppe=sample(LETTERS, 15), Wert=runif(15), Bedeutung="v")
DT2 <- data.table(Gruppe=sample(LETTERS, 17), Wert=runif(17), Bedeutung="w")
DT3 <- data.table(Gruppe=sample(LETTERS, 19), Wert=runif(19), Bedeutung="x")
DT4 <- data.table(Gruppe=sample(LETTERS, 21), Wert=runif(21), Bedeutung="y")
DT5 <- data.table(Gruppe=sample(LETTERS, 23), Wert=runif(23), Bedeutung="z")

DT.long <- rbindlist(list(DT1,DT2,DT3,DT4,DT5), fill=TRUE)

DT.wide <- dcast(DT.lang, Gruppe ~ Bedeutung, value.var="Wert")
Antworten