我正在寻找(我认为)在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)