通过匹配键合并R中的两个数据帧

use*_*621 3 merge r matching

我有两个数据帧DFS和DFE.DFS具有一组员工开始工作的开始日期.和DFE有他们完成工作的结束日期.员工ID在两个框架中出现的顺序可能不同.

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'));
Run Code Online (Sandbox Code Playgroud)

我想创建一个与每个员工的开始结束日期相匹配的数据框(例如下面的输出):

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' )  );
Run Code Online (Sandbox Code Playgroud)

这可以循环完成.但我想知道是否有一种替代方法可以在R中进行匹配和合并,而不涉及循环.谢谢你的帮助.

Mat*_*erg 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
Run Code Online (Sandbox Code Playgroud)