2016-08-29 5 views
4

2つのデータフレームのデカルト積を行う必要があります。例えば、R:2つのデータフレームのデカルト積に対する任意の関数?

A = id weight type 
    10 20  a 
    10 30  b 
    25 10  c 
B = date report 
    2007 y 
    2008 n 

次いでCは、いくつかのIDSとして

C = id weight type date report 
     10 20  a 2007 y 
     10 20  a 2008 n 
     10 30  b 2007 y 
     10 30  b 2008 n 
     25 10  c 2007 y 
     25 10  c 2008 n 

は、Aは同一であるデカルトAの生成物とBを実行した後ようになるので、私は

C <- merge(A$id,B$date) 
C <- merge(C,A,by="id") 
C <- merge(C,B,by="date") 
ような方法を使用することはできません

この方法では、さらに多くの行が生成されます。誰も私をここから助けてくれますか?ありがとう

答えて

8

merge(A, B)、2つをリンクする列がない場合、デフォルトでこれを行う必要がありますか?

?merge(強調鉱山)から:

by.xとby.y両方は長さ0(長さゼロベクトル又はNULL)、その結果、Rであるか、または、デカルト場合xおよびyの積、すなわちdim(r)= c(nrow(x)* nrow(y)、ncol(x)+ ncol(y))である。

確かに、これは?mergeを見るために知っている必要があります。 Rでのコンテキストベースの検索には深刻な欠点があります。たとえrseekであっても、すぐにこれを提供するわけではありません。

+0

あなたは正しいです。どうもありがとう!! –

関連する問題