SparkR合并而不创建重复列

时间:2016-08-09 10:12:40

标签: r apache-spark dataframe merge sparkr

我决定创建此问题,因为the answer provided to a very similar问题对我的方案不起作用:

我想合并这两个SparkR数据帧df1

col1    col2    
1       11      
2       22      
3       33      
4       44  

和df2

col1    col2    newcol
1       11      401
2       22      402
3       33      403
4       44      404

dfs应该在第1列和第2列合并。我尝试了上面链接中提出的所有步骤(例如省略了" by"语句),但结果总是如下所示:

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

我不想要重复列,现在我必须手动删除col1_y,col2_y并将col1_x,col2_x重命名为仅包含col1,col2和newcol:

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")

我使用by,by.x和by.y语句尝试了各种组合,但没有一个工作。 有没有办法可以通过省略其中一个步骤来简化这个繁琐的纠正链?谢谢!

1 个答案:

答案 0 :(得分:1)

这是预期的行为,一个选项是生成select()的{​​{1}}个相关列:

DataFrame