如何使用不同的列与dplyr进行自我联接?

ar7

我想使用R实现一个经典的自联接问题,dplyr但无法实现。

输入:数据框中用empidempnamemanagerid

输出:managername每个数据empid

library(dplyr)


empid = c(1, 2, 3, 13, 11, 9, 8, 7, 3)
empname = paste0("emp", empid) 
managerid = c(0, 0, 1, 2, 2, 1, 3, 2, 1)
df = data.frame(empid, empname, managerid)
df
# empid empname managerid
#      1    emp1         0
#      2    emp2         0
#      3    emp3         1
#     13   emp13         2
#     11   emp11         2
#      9    emp9         1
#      8    emp8         3
#      7    emp7         2
#      3    emp3         1


df %>% 
  unique() %>% 
  left_join(., ., by = ("managerid" = "empid"))

# empid empname.x managerid.x empname.y managerid.y
#      1      emp1           0      emp1           0
#      2      emp2           0      emp2           0
#      3      emp3           1      emp3           1
#     13     emp13           2     emp13           2
#     11     emp11           2     emp11           2
#      9      emp9           1      emp9           1
#      8      emp8           3      emp8           3
#      7      emp7           2      emp7           2

代码显然没有给出预期的结果。应该是这样的:

# empid empname.x managerid.x empname.y 
#      1      emp1           0      NA           
#      2      emp2           0      NA           
#      3      emp3           1    emp1           
#     13     emp13           2    emp2           
#     11     emp11           2    emp2           
#      9      emp9           1    emp1           
#      8      emp8           3    emp3          
#      7      emp7           2    emp2 
普杜布斯

您只需要将by条件设为向量:left_join(., ., by = c("managerid" = "empid"))

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何使用不重复的不同列进行干净的联接

如何在XDocument上使用LINQ进行自我联接?

如何通过子查询进行自我联接?

如何在KDB查询中进行自我联接?

如何使用“左自我排除联接”从审核表中找到最近修改的列值?

如何在python中使用不同类型的联接进行sql-alchemy

如何使用不同的路线进行反应?

如何使用不同的数据进行排序

SQL,对3个联接表进行自我联接

使用不同的联接条件在同一表上进行多个联接

我如何使用不同的哇动画

如何编写自我联接查询

如何在dplyr中使用不相等的列(反向toString)进行分隔

如何在Spark 2.3.0中进行自我联接?正确的语法是什么?

如何对我在Django中过滤的每个对象使用不同的列表进行过滤(in = ...)?

在Access VBA中使用动态子句/条件进行自我联接

在表的子集上进行自我左联接

跨BigQuery中的嵌套记录进行自我联接

在Hibernate中使用不同的别名对同一关联进行多次联接

如何调用不是来自我使用 require.js 的文件的对象

在Oracle中使用不同的列进行透视

我们如何使用DPLYR过滤R中的联接

Laravel PHPUnit如何使用不同的迁移进行测试

如何使用不同的参数进行映射 - ruby

如何使用不同的PostgreSQL实例进行生产测试

如何使用不同的手机进行通知?

是否可以在dplyr中进行完全联接并保留联接中使用的所有列?

我们如何使用不同接口的默认实现?

我们应该如何使用不同的谷歌字体?