我面临以下问题。我有一份并购交易 list ,每笔交易都包括有关 (1) 收购方、(2) 供应商、(3) 目标的数据。数据以关系可以是 n:n:n 的方式构建,看起来类似于以下内容:
dealid acquirer target vendor
1 FirmA FirmB FirmC
1 FirmD FirmE
2 .....................
所以问题是交易中的行本身没有意义,例如,FirmD 也是 FirmB 的共同收购者。
我现在需要创建所有可能的收购方-目标-供应商组合 每个dealid内 .我设法用
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
关于r - 扩展组内所有可能组合的网格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44870494/