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

时间:2013-05-05 18:37:33

标签: r merge 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'));

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

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中进行匹配和合并,而不涉及循环。谢谢你的帮助。

1 个答案:

答案 0 :(得分: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