3

DFS と DFE の 2 つのデータ フレームがあります。DFS には、一連の従業員が仕事を開始した開始日があります。DFE には、ジョブを完了した終了日があります。従業員 ID が 2 つのフレームに表示される順序は異なる場合があります。

DFS <- data.frame(ID=c('ID1','ID2','ID3'), begin=c('3/1/06 18:20', '2/1/07 15:30', '5/3/06 9:00'));
DFE <- data.frame(ID=c('ID3', 'ID2','ID1'), end=c('4/1/10 12:00', '6/1/11 14:20', '1/1/09 11:10'));

各従業員の開始終了日と一致するデータ フレームを作成したい (例: 以下の出力)。

DFR <-data.frame(ID=c('ID1','ID2','ID3'), begin=c('3/1/06 18:20', '2/1/07 15:30', '5/3/06 9:00'),
               end=c('1/1/09 11:10', '6/1/11 14:20','4/1/10 12:00' )  );

これはループで実行できます。しかし、ループを含まない R でのマッチングとマージの代替方法があるかどうかを知りたいです。ご協力いただきありがとうございます。

4

1 に答える 1

7

mergeあなたが望むことをします。結合されたデータのデータ フレームが作成されます。IDここでは、 で指定された列で結合しますby

byデフォルトでは、データ フレーム間の列名の交点になるため、他に共通の列がない場合は指定する必要はありません。

merge(DFS, DFE, by='ID')
##    ID        begin          end
## 1 ID1 3/1/06 18:20 1/1/09 11:10
## 2 ID2 2/1/07 15:30 6/1/11 14:20
## 3 ID3  5/3/06 9:00 4/1/10 12:00
于 2013-05-05T18:39:36.873 に答える