r语言 - 将两个数据框组合在一起以创建具有所有组合的长数据框



我正在寻找(我认为)在R中融化两个数据框架(或python,但我目前正在R中工作)。我可能因为不知道问题的正确措辞而找错了地方,但是我还是找不到答案。

我有两个数据框(datA, datB),它们的大小不同,我需要组合在一起创建一个'长'数据框- datC。

datA <- data.frame("Val1" = c(1, 2, 3),
"Val2" = c(0,1,1))

datB <- data.frame("Val3" = c("A","B","C","D"),
"Val4" = c(15,25,35,45))

我希望将这些数据框组合成datC,我不介意如果datC是从datA或datB创建的,因为这些数据框将被删除,一旦我有我的最终数据集。

datC应该看起来像:

datC <- data.frame("Val1" = c(1,1,1,1,2,2,2,2,3,3,3,3),
"Val2" = c("A","B","C","D","A","B","C","D","A","B","C","D"),
"Val3" = c(0,0,0,0,1,1,1,1,1,1,1,1),
"Val4" = c(15,25,35,45,15,25,35,45,15,25,35,45))
Val1       Val2       Val3       Val4
1          A          0          15
1          B          0          25
1          C          0          35
1          D          0          45
2          A          1          15
2          B          1          25
2          C          1          35
2          D          1          45
3          A          1          15
3          B          1          25
3          C          1          35
3          D          1          45

就像我说的,我不知道该怎么称呼我的问题,所以寻找解决方案一直是一个挑战。一旦我意识到我在寻找什么,我会改变标题来帮助别人。

编辑:下面的答案行得通merge(datA, datB, all=TRUE),

这个问题已经被问过了,看看这篇文章:用所有可能的组合组合两个数据帧

我不知道这是否意味着这篇文章已经关闭,但如果它没有,我不会删除它,因为它可能会帮助其他人,像我一样,不知道该搜索什么。

非常感谢您的快速帮助

这叫做交叉连接(或笛卡尔积)在R进制下很容易做到

merge(datA,datB,all=TRUE)

最新更新