2つ(またはそれ以上)のベクトルのすべての要素の一意の組み合わせ 質問する

2つ(またはそれ以上)のベクトルのすべての要素の一意の組み合わせ 質問する

R で、異なるサイズの 2 つのベクトルのすべての要素の一意の組み合わせを作成しようとしています。

例えば、最初のベクトルは

a <- c("ABC", "DEF", "GHI")

2つ目は、現在文字列として保存されている日付です

b <- c("2012-05-01", "2012-05-02", "2012-05-03", "2012-05-04", "2012-05-05")

このような2つの列を持つデータフレームを作成する必要があります

> data
    a          b
1  ABC 2012-05-01
2  ABC 2012-05-02
3  ABC 2012-05-03
4  ABC 2012-05-04
5  ABC 2012-05-05
6  DEF 2012-05-01
7  DEF 2012-05-02
8  DEF 2012-05-03
9  DEF 2012-05-04
10 DEF 2012-05-05
11 GHI 2012-05-01
12 GHI 2012-05-02
13 GHI 2012-05-03
14 GHI 2012-05-04
15 GHI 2012-05-05

つまり、基本的には、1 つのベクトル (a) のすべての要素と 2 番目のベクトル (b) のすべての要素を並べて考慮し、一意の組み合わせを探しています。

理想的なソリューションは、より多くの入力ベクトルに一般化されます。


参照:
組み合わせのマトリックスを生成する方法

ベストアンサー1

これがあなたが求めているものかもしれません

> expand.grid(a,b)
   Var1       Var2
1   ABC 2012-05-01
2   DEF 2012-05-01
3   GHI 2012-05-01
4   ABC 2012-05-02
5   DEF 2012-05-02
6   GHI 2012-05-02
7   ABC 2012-05-03
8   DEF 2012-05-03
9   GHI 2012-05-03
10  ABC 2012-05-04
11  DEF 2012-05-04
12  GHI 2012-05-04
13  ABC 2012-05-05
14  DEF 2012-05-05
15  GHI 2012-05-05

結果の順序が希望どおりでない場合は、後で並べ替えることができます。 の引数に名前を付けると、expand.grid列名になります。

df = expand.grid(a = a, b = b)
df[order(df$a), ]

expand.grid任意の数の入力列に一般化されます。

おすすめ記事