r - 如何在 1 列上合并 2 列

标签 r dataframe

我想合并 2 个 df,其中 df1 包含 2 列和 df2 1 列,在这种情况下如何应用函数合并?

这是示例案例:

df1 <- data.frame(var1=letters[1:5],var2=letters[6:10])
df2 <- data.frame(var3=letters[1:10])

错误尝试:
merge(df1,df2,by.x=c("var1","var2"),by.y="var3",all.y=TRUE)

如何合并这两个 df 以便匹配搜索使用 df1 (var1 & var2) 的两列并对 df2 (var3) 进行操作?

期望的输出:
    var1  var2   var3 
1     a    f       a
2     b    g       b
3     c    h       c
4     d    i       d
5     e    j       e
6     <NA> <NA>    f
7     <NA> <NA>    g
8     <NA> <NA>    h
9     <NA> <NA>    i 
10    <NA> <NA>    j

编辑:改进的数据(我希望):
df1 <- data.frame(var1=c(letters[1:5],rep("x",5)),var2=c(letters[6:10],rep("x",5)))
df2 <- data.frame(var3=letters[1:10])

期望的输出:
     var1  var2   var3 
 1     a    f       a
 2     b    g       b
 3     c    h       c
 4     d    i       d
 5     e    j       e
 6     x    x       f
 7     x    x       g
 8     x    x       h
 9     x    x       i 
10     x    x       j

最佳答案

这是一个可能的 data.table根据第一个所需输出的解决方案

library(data.table)
setkey(setDT(df2), var3)
df2[df1, `:=`(var1 = i.var1, var2 = i.var2)][]
#     var3 var1 var2
#  1:    a    a    f
#  2:    b    b    g
#  3:    c    c    h
#  4:    d    d    i
#  5:    e    e    j
#  6:    f   NA   NA
#  7:    g   NA   NA
#  8:    h   NA   NA
#  9:    i   NA   NA
# 10:    j   NA   NA

关于r - 如何在 1 列上合并 2 列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28677069/

相关文章:

r - R 热图中的颜色标签(文本)

r - 精子功能不明确

python - 查询具有列表值的 Pandas 数据框列

python - 使用 df.apply 返回满足条件的行数

python - pandas:选择行 - 基于列表 - 具有重复行标签的 DF

r - 如何根据开始日期和结束日期将数据帧的行拆分为多行?

使用 SublimeREPL 在远程 ssh 桌面上运行 R 控制台

r - igraph read.graph 添加一个顶点

r - 如何在不同行中显示组名时聚合 data.frame

python - 如何对 Pandas 中的数据进行分组和重新采样?