1

皆さん、

2 つのデータ フレーム df1 と df2 を連結またはマージしたいと考えています。私の目標は、列が df1 と df2 の結合である新しいデータ フレームを作成するのと同じくらい簡単です。

product=c("p1","p1","p1","p1","p1","p1","p1","p1","p2","p2","p2","p2","p2","p2","p2","p2","p3","p3","p3","p3","p3","p3","p3","p3","p4","p4","p4","p4","p4","p4","p4","p4")
skew=c("b","b","b","b","a","a","a","a","b","b","b","b","a","a","a","a","b","b","b","b","a","a","a","a","b","b","b","b","a","a","a","a")
version=c(0.1,0.1,0.2,0.2,0.1,0.1,0.2,0.2,0.1,0.1,0.2,0.2,0.1,0.1,0.2,0.2,0.1,0.1,0.2,0.2,0.1,0.1,0.2,0.2,0.1,0.1,0.2,0.2,0.1,0.1,0.2,0.2)
color=c("C1","C2","C1","C2","C1","C2","C1","C2","C1","C2","C1","C2","C1","C2","C1","C2","C1","C2","C1","C2","C1","C2","C1","C2","C1","C2","C1","C2","C1","C2","C1","C2")
price=c(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32)

df1 = data.frame(product, skew, version)
df2 = data.frame(product, skew, color, price)

私の願いは、以下のような結果を得ることです。

私はいくつかのオプションを試しました:

#option 1 with cbind
df <- cbind(df1,df2)

これは、データフレームの複製された列「製品」と「スキュー」を返します。

# Option 2, use data.frame
df <- data.frame(df1,df2)

これにより、「製品」と「スキュー」の列が追加されたことを除いて、私が望んでいたものがほとんど得られました。ただし、「.1」という接尾辞が付いているため、重複はありません。

# option 3, use merge which seems to be the way to go
df <- merge(df1,df2) 

これは実際にすべてのデータセットからユニオンを作成し、提供された 32 個のうち合計 128 個の観測値を作成したため、マージで何かが欠けていると思います。それがマージの仕組みだと思います。「?merge」を実行し、いくつかのオプションを試しましたが、必要なものを吐き出すことができませんでした。

だから私の質問は:

上記のように df1 と df2 から目的のデータフレームを取得する最良の方法は何ですか?

あなたの助けのために前もってThx!リヤド。

     product skew  version color price
1       p1    b     0.1    C1     1
2       p1    b     0.1    C2     2
3       p1    b     0.2    C1     3
4       p1    b     0.2    C2     4
5       p1    a     0.1    C1     5
6       p1    a     0.1    C2     6
7       p1    a     0.2    C1     7
8       p1    a     0.2    C2     8
9       p2    b     0.1    C1     9
10      p2    b     0.1    C2    10
11      p2    b     0.2    C1    11
12      p2    b     0.2    C2    12
13      p2    a     0.1    C1    13
14      p2    a     0.1    C2    14
15      p2    a     0.2    C1    15
16      p2    a     0.2    C2    16
17      p3    b     0.1    C1    17
18      p3    b     0.1    C2    18
19      p3    b     0.2    C1    19
20      p3    b     0.2    C2    20
21      p3    a     0.1    C1    21
22      p3    a     0.1    C2    22
23      p3    a     0.2    C1    23
24      p3    a     0.2    C2    24
25      p4    b     0.1    C1    25
26      p4    b     0.1    C2    26
27      p4    b     0.2    C1    27
28      p4    b     0.2    C2    28
29      p4    a     0.1    C1    29
30      p4    a     0.1    C2    30
31      p4    a     0.2    C1    31
32      p4    a     0.2    C2    32
4

2 に答える 2