Tabelle zusammenstellen
Tabelle zusammenstellen
Hallo,
ich habe sieben Tabellen. Eine Spalte könnte jeweils als ID dienen. Die Tabellen sind alle gleich aufgebaut nur die Inhalte betreffen jeweils einen anderen Kontext. Nun versuche ich aus diesen Tabellen einzelne Spalten zu einer neuen Tabelle zu kombinieren. Also zum Beispiel Spalten 1 und zwei aus Tabelle 1 mit der Spalte 5 der restlichen Tabellen. Wie mache ich das? Gibt es eine Möglichkeit das auf einen Schlag zu programieren oder kann ich immer nur zwei Tabellen kombinieren?
Vielen Dank
MfG
wbart
ich habe sieben Tabellen. Eine Spalte könnte jeweils als ID dienen. Die Tabellen sind alle gleich aufgebaut nur die Inhalte betreffen jeweils einen anderen Kontext. Nun versuche ich aus diesen Tabellen einzelne Spalten zu einer neuen Tabelle zu kombinieren. Also zum Beispiel Spalten 1 und zwei aus Tabelle 1 mit der Spalte 5 der restlichen Tabellen. Wie mache ich das? Gibt es eine Möglichkeit das auf einen Schlag zu programieren oder kann ich immer nur zwei Tabellen kombinieren?
Vielen Dank
MfG
wbart
Re: Tabelle zusammenstellen
Alles eine liste packen und mit lapply drüberlaufen-ist eine generelle Herangehensweise.
data. table:rbindlist() ist auch oft hilfreich.
Ohne eine reproduzierbares Beispiel kann ich leider nicht mehr sagen.
data. table:rbindlist() ist auch oft hilfreich.
Ohne eine reproduzierbares Beispiel kann ich leider nicht mehr sagen.
Bitte immer ein reproduzierbares Minimalbeispiel angeben. Meinungen gehören mir und geben nicht die meines Brötchengebers wieder.
Dieser Beitrag ist lizensiert unter einer CC BY 4.0 Lizenz
.
Dieser Beitrag ist lizensiert unter einer CC BY 4.0 Lizenz
.
Re: Tabelle zusammenstellen
Hallo wbart,
willkommen im Forum!
Wie EDi schon schrieb:
das Ablegen der Dataframes in einer Liste ist die Basis für alles andere:
Dann kann man Abläufe automatisieren. Die üblichen Wergzeuge sind sapply(), lapply(), mapply(), Map(), Reduce(), do.call() u.a., z.B.:
Gruß, Jörg
willkommen im Forum!
Wie EDi schon schrieb:
das Ablegen der Dataframes in einer Liste ist die Basis für alles andere:
Code: Alles auswählen
L <- list(df1, df2, df3, df4, df5, df6, df7)
Code: Alles auswählen
L <- list(iris, iris, iris)
as.data.frame(mapply('[', L, list(2:3, 1, 5)))
Re: Tabelle zusammenstellen
Vielen herzlichen Dank. Das probiere ich gleich aus!
Viele Grüße
wbart
Viele Grüße
wbart
Re: Tabelle zusammenstellen
Schwieriger als gedacht. Deshalb schiebe ich noch mal ein paar Details hinterher. Die Tabellen sehen wie folgt aus:
Tabelle 1:
"Sequence.ID" "Primary.Sequence.Name" "Sequence.Description" "Ratio P1" "Fold.Change P1" "Klasse"
1
2
3
4
.
.
.
Tabelle 2
"Sequence.ID" "Primary.Sequence.Name" "Sequence.Description" "Ratio P2" "Fold.Change P2" "Klasse"
1
2
3
4
.
.
.
etc. lediglich die Spaltennamen von Ratio und Fold.Change ändern sich durch einen Präfix. Es gibt noch 5 weiter Tabellen dieser Art.
als Ziel möchte ich eine Tabelle mit den ersten 3 Spalten aus Tabelle 1 (in diesem Fall sind die ersten drei Spalten immer gleich, generell wäre aber ein zusammenfügen im Sinne eines full outer Joins sinnvoll) plus alle Ratio Daten
"Sequence.ID" "Primary.Sequence.Name" "Sequence.Description" "Ratio P1" "Ratio P2" "Ratio M1" "Ratio M2"
2
3
4
.
.
.
Die Liste konnte ich noch erstellen aber mit mapply kam ich nicht zurecht und warum as.dataframe?
Sorry aber ich fange gerade erst an
VG
Werner
Tabelle 1:
"Sequence.ID" "Primary.Sequence.Name" "Sequence.Description" "Ratio P1" "Fold.Change P1" "Klasse"
1
2
3
4
.
.
.
Tabelle 2
"Sequence.ID" "Primary.Sequence.Name" "Sequence.Description" "Ratio P2" "Fold.Change P2" "Klasse"
1
2
3
4
.
.
.
etc. lediglich die Spaltennamen von Ratio und Fold.Change ändern sich durch einen Präfix. Es gibt noch 5 weiter Tabellen dieser Art.
als Ziel möchte ich eine Tabelle mit den ersten 3 Spalten aus Tabelle 1 (in diesem Fall sind die ersten drei Spalten immer gleich, generell wäre aber ein zusammenfügen im Sinne eines full outer Joins sinnvoll) plus alle Ratio Daten
"Sequence.ID" "Primary.Sequence.Name" "Sequence.Description" "Ratio P1" "Ratio P2" "Ratio M1" "Ratio M2"
2
3
4
.
.
.
Die Liste konnte ich noch erstellen aber mit mapply kam ich nicht zurecht und warum as.dataframe?
Sorry aber ich fange gerade erst an
VG
Werner
Re: Tabelle zusammenstellen
Hallo Werner,
Wenn ja, dann wird das Zusammensammeln der Spalten mit mapply() so nicht funktionieren.
In meinem Beispiel (es ist auch bei Dir ausführbar!) kannst Du doch probeweise as.data.frame() weglassen und wirst dann feststellen, dass Du als Ergebnis eine Liste mit drei Elementen bekommst - also keinen Dataframe.
Gruß, Jörg
https://stackoverflow.com/questions/129 ... left-rightwbart hat geschrieben: ↑Mi Apr 18, 2018 10:21 am Schwieriger als gedacht. Deshalb schiebe ich noch mal ein paar Details hinterher. Die Tabellen sehen wie folgt aus:
...
als Ziel möchte ich eine Tabelle mit den ersten 3 Spalten aus Tabelle 1 (in diesem Fall sind die ersten drei Spalten immer gleich, generell wäre aber ein zusammenfügen im Sinne eines full outer Joins sinnvoll) plus alle Ratio Daten
Welche Probleme gab es mit mapply()? Sind Deine Dataframes verschieden lang?Die Liste konnte ich noch erstellen aber mit mapply kam ich nicht zurecht und warum as.dataframe?
Wenn ja, dann wird das Zusammensammeln der Spalten mit mapply() so nicht funktionieren.
In meinem Beispiel (es ist auch bei Dir ausführbar!) kannst Du doch probeweise as.data.frame() weglassen und wirst dann feststellen, dass Du als Ergebnis eine Liste mit drei Elementen bekommst - also keinen Dataframe.
Gruß, Jörg
Re: Tabelle zusammenstellen
Hallo Jogo,
ich habe z.B. folgendes eingegeben:
> Test <- as.data.frame(mapply("[", L, list(1:3,4)))
Warning message:
In mapply("[", L, list(1:3, 4)) :
longer argument not a multiple of length of shorter
Kontrolle ergab:
> names(Test)
[1] "Sequence.ID" "Primary.Sequence.Name" "Sequence.Description" "Ratio.P2"
[5] "Sequence.ID.1" "Primary.Sequence.Name.1" "Sequence.Description.1" "Ratio.M1"
[9] "Sequence.ID.2" "Primary.Sequence.Name.2" "Sequence.Description.2" "Ratio.Q1"
[13] "Sequence.ID.3" "Primary.Sequence.Name.3" "Sequence.Description.3"
Erstes Problem die ersten drei Spalten tauchen mehrmals auf. Zweites Problem es fehlen vier Spalten mit Ratios.
Die Warnung zeigt mir, das das ich ungleiche Verhältnisse habe. Was bedeutet longer Argument was length of shorter?
Ich habe leere Zellen in der Tabelle. Kann das damit zu tun haben? Anzahl der Zeilen und Spalten ist gleich.
Was genau macht die Funktion "[" ?
Die Argumente in list() sind mir nicht klar. Wie kann ich ihm sagen, dass aus der Liste Tabelle x mit Spalte a und Tabelle Y mit Spalte b gemeint ist.
Oder funktioniert der ganze Term ganz anders?
VG
wbart
ich habe z.B. folgendes eingegeben:
> Test <- as.data.frame(mapply("[", L, list(1:3,4)))
Warning message:
In mapply("[", L, list(1:3, 4)) :
longer argument not a multiple of length of shorter
Kontrolle ergab:
> names(Test)
[1] "Sequence.ID" "Primary.Sequence.Name" "Sequence.Description" "Ratio.P2"
[5] "Sequence.ID.1" "Primary.Sequence.Name.1" "Sequence.Description.1" "Ratio.M1"
[9] "Sequence.ID.2" "Primary.Sequence.Name.2" "Sequence.Description.2" "Ratio.Q1"
[13] "Sequence.ID.3" "Primary.Sequence.Name.3" "Sequence.Description.3"
Erstes Problem die ersten drei Spalten tauchen mehrmals auf. Zweites Problem es fehlen vier Spalten mit Ratios.
Die Warnung zeigt mir, das das ich ungleiche Verhältnisse habe. Was bedeutet longer Argument was length of shorter?
Ich habe leere Zellen in der Tabelle. Kann das damit zu tun haben? Anzahl der Zeilen und Spalten ist gleich.
Was genau macht die Funktion "[" ?
Die Argumente in list() sind mir nicht klar. Wie kann ich ihm sagen, dass aus der Liste Tabelle x mit Spalte a und Tabelle Y mit Spalte b gemeint ist.
Oder funktioniert der ganze Term ganz anders?
VG
wbart
Re: Tabelle zusammenstellen
Hallo Werner,
Dokumentation:
L[[1]][1:3] und L[[2]][4]
Dokumentation:
Zur Interpretation Deiner Frage müsste ich jetzt wissen, ob Du mit a die Zeichenkette "a" meinst oder ob a der Name eines Objektes ist, dass irgend einen bestimmten Wert enthält. Solange Du uns keine reproduzierbares Beispiel lieferst (siehe viewtopic.php?f=20&t=11 ), müssen unsere Antworten entsprechend vage/allgemein bleiben.
Bitte lies auch viewtopic.php?f=20&t=29 über das Formatieren von Code und verwende in zukünftigen Nachrichten die entsprechenden Formatierungen.
Gruß, Jörg
hier wäre der Vergleich wichtig:
Code: Alles auswählen
length(L) ## gegenüber
length(list(1:3, 4)) ## hier sollte das Ergebnis 2 sein!
zur Kontrolle siehe oben.Die Warnung zeigt mir, das das ich ungleiche Verhältnisse habe. Was bedeutet longer Argument was length of shorter?
für den obengenannten Fehler eher nicht. So wie ich das sehe, kommt es erst garnicht so weit.Ich habe leere Zellen in der Tabelle. Kann das damit zu tun haben? Anzahl der Zeilen und Spalten ist gleich.
Es ist die Funktion mit denen Du Elemente indizierst/auswählst aus einem geeigneten Objekt.Was genau macht die Funktion "[" ?
Dokumentation:
Code: Alles auswählen
help("[")
So wie oben angegeben stellt Dir der Aufruf von mapply(...) folgende Sachen in eine Liste:Die Argumente in list() sind mir nicht klar. Wie kann ich ihm sagen, dass aus der Liste Tabelle x mit Spalte a und Tabelle Y mit Spalte b gemeint ist.
Oder funktioniert der ganze Term ganz anders?
L[[1]][1:3] und L[[2]][4]
Dokumentation:
Code: Alles auswählen
help(mapply) ## oder
help("mapply") ## oder
?mapply
Bitte lies auch viewtopic.php?f=20&t=29 über das Formatieren von Code und verwende in zukünftigen Nachrichten die entsprechenden Formatierungen.
Gruß, Jörg
Re: Tabelle zusammenstellen
Ich würde aus den Spalten amenities eine neue variable erzeugen "P" , danach P aus den Namen entfernen und alles mit rbind zusammenfassen.
Ohne Beispiel kann ich leider nicht mehr sagen.
Ohne Beispiel kann ich leider nicht mehr sagen.
Bitte immer ein reproduzierbares Minimalbeispiel angeben. Meinungen gehören mir und geben nicht die meines Brötchengebers wieder.
Dieser Beitrag ist lizensiert unter einer CC BY 4.0 Lizenz
.
Dieser Beitrag ist lizensiert unter einer CC BY 4.0 Lizenz
.