3

我有两个数据框 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 中是否存在不涉及循环的匹配和合并替代方法。谢谢你的帮助。

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 回答