我尝试将两个数据框组合在一起,这两个数据框具有相同的列名和行名,但每个点的值不同。它们基本上是重复实验。我想按行合并,但也将列分组在一起。
基本上看起来像这样:
Dataframe 1:
| 我不知道|C1| C2| C3|
| - -----|- -----|- -----|- -----|
| r1| 2| 3| 1|
| r2| 0.5| 2| 3|
| r3| 3| 4| 2|
Dataframe 2:
| 我不知道|C1| C2| C3|
| - -----|- -----|- -----|- -----|
| r1| 3| 5个|3|
| r2|六|2| 3|
| r3| 4| 1|七个|
我试图得到一个输出,看起来像这样:
| 我不知道|C1| C1| C2| C2| C3| C3|
| - -----|- -----|- -----|- -----|- -----|- -----|- -----|
| r1| 2| 3| 3| 5个|1| 3|
| r2| 0.5|六|2| 2| 3| 3|
| r3| 3| 4| 4| 1| 2|七个|
我已经试过使用cbind()
、rbind()
和merge()
,但是两者都给出了不太正确的结果。rbind(data_1, data_2)
给出了接近我想要的输出,但是列没有排序或分组在一起。
从本质上讲,它给出了一个看起来像这样的输出:
| 我不知道|C1| C2| C3| C1| C2| C3|
| - -----|- -----|- -----|- -----|- -----|- -----|- -----|
| r1| 2| 3| 1| 3| 5个|3|
| r2| 0.5| 2| 3|六|2| 3|
| r3| 3| 4| 2| 4| 1|七个|
我想也许sort()
或grouping()
可以是一个解决方案,但我不能想出如何使用这些来获得我想要的结果。
4条答案
按热度按时间y4ekin9u1#
输出
数据
bvpmtnay2#
不需要对列名进行排序,您可以通过选择元素1和4,2和5,3和6来计算根据需要重新排序列的排列。或者,更一般地:
1、(n + 1)、2、(n + 2)、3、(n + 3)、…
其中
n
是第一 Dataframe 的列数。在R代码中:
b09cbbtk3#
谢谢你的帮助!
我最终使用了CODER 1的答案,并稍作修改以获得我想要的结果。它还允许我使用多个 Dataframe 来扩展工作流,这些 Dataframe 都具有相同的列名。我知道最好有不同的列名,但我必须使用现有的列名。
为了让它工作,我使用了:
这最终也会自动分配唯一的列名。
我知道这可能不是最好的代码,我相信它可以优化,但它似乎为我工作。谢谢大家的帮助!
bq9c1y664#
要通过将列分组来合并两个 Dataframe ,可以使用R中的
cbind()
函数。但是,要实现将列排序并分组在一起的期望输出,可以使用order()
函数对列名进行排序,然后使用排序后的列名从两个数据框中选择列。下面是一个例子:输出:
在本例中,
sorted_cols
变量存储来自df1
的排序列名。然后,使用cbind()
函数将列与df1
和df2
中排序的列名组合起来,得到所需的输出。