在R上等效的Stata joinby()?

时间:2016-05-05 17:06:21

标签: r stata

我正在尝试在R上编写Stata代码,而我似乎无法在R上找到等效的joinby()joinby()水平组合2个数据集,但形成所有成对组合 小组内。

我有两个数据框:100个医院中的一个和10,000个GP中的另一个。我需要将所有的GP与每家医院相匹配 - 在组合后,我的结果数据框中最终会有100 * 10,000 = 1,000,000行。

有什么建议吗?

2 个答案:

答案 0 :(得分:2)

可能有一个更简洁的方法,但以下应该有效,比如你的医院data.frame,hospDf,医院是医生docDf独有的。您可以使用expand.grid获取所有医院 - 医生组合的数据框架:

hospDocDf <- expand.grid(hospDf$hospID, docDf$docID)

然后将两个data.frames合并到这个:

hospDocDf <- merge(hospDocDf, hospDf, by="hospID", all.x=TRUE)
hospDocDf <- merge(hospDocDf, DocDf, by="docID", all.x=TRUE)

all.x = TRUE参数不是必需的,但它不会伤害任何东西。

答案 1 :(得分:1)

使用交叉连接合并,它实质上是一个没有by参数的合并。这将返回两组100 X 10,000之间的笛卡尔积:

df <- merge(hospitaldata, gpsdata)