小编glo*_*onn的帖子

在列之间找到一对一,一对多和多对一的关系

请考虑以下数据框:

 first_name last_name
1         Al     Smith
2         Al     Jones
3       Jeff  Thompson
4      Scott  Thompson
5      Terry    Dactil
6       Pete       Zah

data <- data.frame(first_name=c("Al","Al","Jeff","Scott","Terry","Pete"),
                   last_name=c("Smith","Jones","Thompson","Thompson","Dactil","Zah"))
Run Code Online (Sandbox Code Playgroud)

在此数据框中,first_name与last_name相关的方式有三种:

  • 一对一(即first_name和last_name之间存在唯一关系)
  • 一对多(即一个first_name指向多个last_name值)
  • 多对一(即多个first_name值指向一个last_name)

我希望能够快速识别三种情况中的每一种并将它们输出到数据框.因此,结果数据框将是:

一对一

  first_name last_name
1      Terry    Dactil
2       Pete       Zah
Run Code Online (Sandbox Code Playgroud)

一对多

  first_name last_name
1         Al     Smith
2         Al     Jones
Run Code Online (Sandbox Code Playgroud)

多对一

   first_name last_name
1       Jeff  Thompson
2      Scott  Thompson
Run Code Online (Sandbox Code Playgroud)

我想在dplyr包中做到这一点.

r dplyr

3
推荐指数
1
解决办法
2135
查看次数

标签 统计

dplyr ×1

r ×1