展开组内所有可能组合的网格

dec*_*eca 2 r

我面临以下问题.我有一份并购交易清单,每笔交易都包括(1)收单方,(2)供应商,(3)目标的数据.数据的结构关系可以是n:n:n,看起来类似于以下内容:

dealid acquirer target vendor
1      FirmA    FirmB  FirmC
1      FirmD           FirmE
2      .....................
Run Code Online (Sandbox Code Playgroud)

所以问题在于交易中的行本身没有意义,因此,例如,FirmD也是FirmB的共同收购者.

我现在需要在每个dealid中创建所有可能的acquirer -target-vendor组合.我已经设法使用该expand.grid功能或简单地通过扩展网格merge.但是,我不知道如何扩展组内所有可能组合的网格.

Pie*_*nte 5

你可以做到这一点与dplyrexpandtidyr.

df <- read.table(text="dealid acquirer target vendor
1      FirmA    FirmB  FirmC
1      FirmD    NA     FirmE
2      FirmA    NA     FirmC
2      FirmD    NA     FirmE
2      FirmG    FirmF  FirmE",header=TRUE,stringsAsFactors=FALSE)

library(dplyr);library(tidyr)
df%>%
  group_by(dealid)%>%
  expand(acquirer, target, vendor)

   dealid acquirer target vendor
    <int>    <chr>  <chr>  <chr>
 1      1    FirmA  FirmB  FirmC
 2      1    FirmA  FirmB  FirmE
 3      1    FirmD  FirmB  FirmC
 4      1    FirmD  FirmB  FirmE
 5      2    FirmA  FirmF  FirmC
 6      2    FirmA  FirmF  FirmE
 7      2    FirmD  FirmF  FirmC
 8      2    FirmD  FirmF  FirmE
 9      2    FirmG  FirmF  FirmC
10      2    FirmG  FirmF  FirmE
Run Code Online (Sandbox Code Playgroud)