我面临以下问题.我有一份并购交易清单,每笔交易都包括(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.但是,我不知道如何扩展组内所有可能组合的网格.
你可以做到这一点与dplyr和expand从tidyr.
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)