SparkR 合并而不创建重复列
SparkR merge without creating duplicate columns
我决定创建这个问题,因为 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 列合并。我尝试了上面 link 中建议的所有步骤(例如,省略 "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 语句的各种组合,但 none 有效。 有没有一种方法可以通过省略其中一个步骤来简化这个繁琐的校正链?谢谢!
这是预期的行为,一种选择是 select()
来自结果 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|
#+----+----+------+
我决定创建这个问题,因为 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 列合并。我尝试了上面 link 中建议的所有步骤(例如,省略 "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 语句的各种组合,但 none 有效。 有没有一种方法可以通过省略其中一个步骤来简化这个繁琐的校正链?谢谢!
这是预期的行为,一种选择是 select()
来自结果 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|
#+----+----+------+