根据多个条件从另一个data.frame添加列

时间:2015-09-28 00:25:37

标签: r

我有2个数据框:

cars = data.frame(car_id=c(1,2,2,3,4,5,5), 
                  max_speed=c(150,180,185, 200, 210, 230,235),
                  since=c('2000-01-01', '2000-01-01', '2007-10-01', '2000-01-01', '2000-01-01', '2000-01-01', '2009-11-18'))

voyages = data.frame(voy_id=c(1234,1235,1236,1237,1238),
                     car_id=c(1,2,3,4,5), 
                     date=c('2000-01-01', '2002-02-02', '2003-03-03', '2004-04-04', '2010-05-05'))

如果仔细观察,您会发现汽车偶尔会有car_id的多个条目,因为制造商决定提高该制作的最高速度。每个条目的日期都标有,表示实际最大速度的应用日期。

我的目标:我想根据max_speed中的值将voyages变量添加到cars数据框。我无法按car_id加入2个数据框,因为我还必须检查date中的voyages并将其与{em>进行比较,因为在{ {1}}确定正确的cars

问题:没有循环的优雅方法是什么?

1 个答案:

答案 0 :(得分:1)

一种方法:

合并两个数据集,包括" cars"中的重复观察。 删除"的日期和#34;晚于" date"的日期。对数据集进行排序,使得最近的日期是第一个,然后删除重复的观察结果,以便" voy_id" - 这样可以确保在"中有两个日期的地方,因为",您只能保留最近一次发生在航行日期之前。

max_speed

也很好奇,看看是否有人想出一种更优雅,更简约的方法。