Как создать комбинацию с 2 наборами данных в R - PullRequest
4 голосов
/ 16 июня 2011

Как мне создать набор данных с каждой возможной комбинацией из двух наборов данных?

Например, было бы 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)

В последнем наборе данных я бы хотел, чтобы в каждой комбинации были ds1 и ds2 (например, ae, af, ag и т. Д.)

Сначала я подумал об использовании merge, поэтому я попытался сделать это, но это не сработало.Я думал, что цикл for, вероятно, будет ответом, но я не уверен относительно того, как я начну.

Предложения?Спасибо!

Ответы [ 2 ]

8 голосов
/ 16 июня 2011

Возможно, вы хотите expand.grid()?expand.grid() создает фрейм данных из всех комбинаций предоставленных векторов или факторов.letters() содержит 26 строчных букв алфавита, поэтому мы можем индексировать первые 4 (A - D) и следующие четыре (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
6 голосов
/ 16 июня 2011

Похоже, что вы хотите декартово произведение ds1 и ds2. Для этого используйте merge(ds1, ds2, by=NULL).

...