2017-05-25 1 views
-1

長さが等しくない2つのデータフレームがあります。Aの列を2つの列に基づいてBにコピーしたいとします。しかし、データフレームは同じ長さではないので、一致が発生したときはいつでも同じ行を複数コピーする必要があります。たとえば、次のように1つのデータフレーム内の列を複数の行にまたがって複写する

Team  Season  stat1  stat2  stat3 
Maryland  2002  23.0  2.54  3.43 
Duke   2002  32.1  2.11  2.56 
Siena  2002  21.5  3.11  2.11 

B

Team   Season 
Maryland  2002 
Siena  2002 
Maryland  2002 
Duke   2002 

決勝

Team  Season  stat1  stat2  stat3 
Maryland 2002  23.0  2.54  3.43 
Siena  2002  21.5  3.11  2.11 
Maryland 2002  23.0  3.11  3.43 
Duke  2002  32.1  2.11  2.56 

だから、私はSTAT1、STAT2をコピーすると、 AからBへのstat3をTeamとSeasonの文字列に基づいて返します。 Marylandが複数回出現するので、stat1、stat2、およびstat3を両方の行にコピーしたいとします。また、長年のために、2002年シーズンのデータのみを掲載しましたが、チームとシーズンの両方に基づいて対応したいと考えています。私は、マージ関数を使用してみましたが、複数の行にコピーするようではありません。

ノートこれは私の最初の投稿ですので、最高のフォーマットをしていないことを私に許してください。前もって感謝します。

答えて

0

B = DATA_BおよびA = DATA_A

final<-merge(data_b,data_a,by=c("Team","Season"),all.x=TRUE) 
+0

データフレームBの元の順序を維持する方法はありますか?あなたのコードは動作しますが、行はアルファベット順に返されます。 2列の各グループがトーナメントゲーム(チーム1対チーム2)であるため、Bの元の順序を維持したい。 – JRP

+1

data_b <-as.data.table(data_b)、data_a <-as.data.table(data_a)、final <-merge(data_b、data_a、by = c( "Team"、 "Season")、all.x = TRUE、sort = FALSE) – Vitalijs

0

簡単peasyを仮定します。マージ機能を使用します。この場合、 merge(A、B、by = c( 'チーム'、 'シーズン')、すべてY = TRUE)

関連する問題