我有两个数据帧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中进行匹配和合并,而不涉及循环。谢谢你的帮助。
答案 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