2016-08-09 14 views
3

ich diese Frage zu schaffen entschieden, weil the answer provided to a very similar Problem nicht für mein Szenario funktioniert:SparkR verschmelzen ohne Erstellen doppelter Spalten

ich diese beiden SparkR Datenrahmen df1

col1 col2  
1  11  
2  22  
3  33  
4  44 

und DF2

zusammenführen möchten

Die dfs sollten in den Spalten 1 und 2 zusammengeführt werden. Ich habe alle Schritte versucht, die im obigen Link vorgeschlagen wurden (z. B. "by" auslassen), aber das Ergebnis sieht immer l aus ike dies:

col1_x col2_x col1_y col2_y newcol 
1  11  1  11  401 
2  22  2  22  402 
3  33  3  33  403 
4  44  4  44  404 

Ich möchte keine doppelten Spalten haben und jetzt bin col1_y, col2_y manuell zu löschen und umbenennen col1_x, col2_x nur col1 haben, col2 und newcol als Ergebnis:

df <- merge(df1, df2) # <- how can I change this? 
df$col1_y <- NULL 
df$col2_y <- NULL 
df <- withColumnRenamed(df, "col1_x", "col1") 
df <- withColumnRenamed(df, "col2_x", "col2") 

Ich versuchte alle Arten von Kombinationen mit der by, by.x und by.y-Anweisung, aber keine funktioniert. Gibt es eine Möglichkeit, diese langwierige Korrekturkette zu vereinfachen, indem ich einen der Schritte weglasse? Danke!

Antwort

1

Dieses Verhalten erwartet wird, ist eine Option, um select() relevanten Spalten aus der resultierenden DataFrame:

library(magrittr) 

# We'll use join to avoid suffixes '_x' & '_y' 
join(df1,df2,(df1$col1==df2$col1)&(df1$col2==df2$col2)) %>% 
    select(df1$col1,df1$col2,df2$newcol) %>% 
    showDF() 
#+----+----+------+ 
#|col1|col2|newcol| 
#+----+----+------+ 
#| 1|11.0| 401| 
#| 2|22.0| 402| 
#| 3|33.0| 403| 
#| 4|55.0| 404| 
#+----+----+------+ 
+0

Große, verbinden und Rohr wählen Sie den Trick. –

Verwandte Themen