如何在R中创建2个数据集的组合

时间:2011-06-16 01:35:48

标签: r combinations

如何使用两个数据集中的每种可能组合创建数据集?

例如,会有2个数据集考虑到特定列:

ds1 = letters[1:4]
ds2 = letters[5:8]

如果这会影响任何事情,也会有与每个字母相关的值(不过我认为不应该这样)

ds1 = data.frame(a=letters[1:4],b=1:4)
ds2 = data.frame(a=letters[5:8],b=5:8)

在最终数据集中,我希望有ds1ds2的每个组合(例如,ae,af,ag等)

起初我想过使用merge,所以我尝试过这样做,但它没有用。我认为for循环可能就是答案,但我不确定如何开始。

连连呢?谢谢!

2 个答案:

答案 0 :(得分:8)

也许你想要expand.grid()expand.grid()根据提供的向量或因子的所有组合创建数据框。 letters()包含26个小写字母,因此我们可以将前4个(A - D)和后4个(E - H)编入索引以传入expand.grid()

> expand.grid(letters[1:4], letters[5:8])
   Var1 Var2
1     a    e
2     b    e
3     c    e
4     d    e
5     a    f
6     b    f
7     c    f
8     d    f
9     a    g
10    b    g
11    c    g
12    d    g
13    a    h
14    b    h
15    c    h
16    d    h

答案 1 :(得分:6)

您似乎想要ds1和ds2的笛卡尔积。为此,请使用merge(ds1, ds2, by=NULL)