我正在尝试在R上编写Stata代码,而我似乎无法在R上找到等效的joinby()
。
joinby()
水平组合2个数据集,但形成所有成对组合
小组内。
我有两个数据框:100个医院中的一个和10,000个GP中的另一个。我需要将所有的GP与每家医院相匹配 - 在组合后,我的结果数据框中最终会有100 * 10,000 = 1,000,000行。
有什么建议吗?
答案 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)