Ich habe zwei Datenrahmen. Zum BeispielR fusionieren ohne doppelte Spalten
require('xlsx')
csvData <- read.csv("myData.csv")
xlsData <- read.xlsx("myData.xlsx")
CSVData sieht wie folgt aus:
Period CPI VIX
1 0.029 31.740
2 0.039 32.840
3 0.028 34.720
4 0.011 43.740
5 -0.003 35.310
6 0.013 26.090
7 0.032 28.420
8 0.022 45.080
xlsData wie folgt aussieht:
Period CPI DJIA
1 0.029 12176
2 0.039 10646
3 0.028 11407
4 0.011 9563
5 -0.003 10708
6 0.013 10776
7 0.032 9384
8 0.022 7774
Wenn ich diese Daten zusammenführen, wird die CPI-Daten dupliziert und ein Suffix wird gesetzt auf der Kopfzeile, was problematisch ist (ich habe viel mehr Spalten in meinen echten DFs).
mergedData <- merge(xlsData, csvData, by = "Period")
mergedData:
Period CPI.x VIX CPI.y DJIA
1 0.029 31.740 0.029 12176
2 0.039 32.840 0.039 10646
3 0.028 34.720 0.028 11407
4 0.011 43.740 0.011 9563
5 -0.003 35.310 -0.003 10708
6 0.013 26.090 0.013 10776
7 0.032 28.420 0.032 9384
8 0.022 45.080 0.022 7774
Ich mag den Datenrahmen fusionieren, ohne Spalten mit demselben Namen duplizieren. Zum Beispiel möchte ich diese Art der Ausgabe:
Period CPI VIX DJIA
1 0.029 31.740 12176
2 0.039 32.840 10646
3 0.028 34.720 11407
4 0.011 43.740 9563
5 -0.003 35.310 10708
6 0.013 26.090 10776
7 0.032 28.420 9384
8 0.022 45.080 7774
Ich will nicht zusätzlich zu verwenden haben ‚durch‘ Argumente oder Löschen von Spalten aus einer der df ist, weil es zu viele Spalten sind, die dupliziert werden in beiden dfs. Ich suche nur nach einer dynamischen Möglichkeit, diese doppelten Spalten während des Merge-Prozesses zu löschen.
Danke!
Danke. Ich wusste nicht, "By" war optional. Was ist, wenn meine df's unterschiedlich lang sind? Angenommen, csvData hat nur 7 Zeilen. Ich möchte alle Daten von xlsData behalten. Dann cbind die csvData (NULL ist in Ordnung für Zeile 8 entsprechend csvData). –
@Clark, benutze 'all = TRUE' vielleicht? Beispiel: 'merge (csvdata [1: 7,], xlsdata, all = TRUE)' – A5C1D2H2I1M1N2O1R2T1
Dies funktioniert nicht mit SparkR. –