我有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
问题:没有循环的优雅方法是什么?
答案 0 :(得分:1)
一种方法:
合并两个数据集,包括" cars"中的重复观察。 删除"的日期和#34;晚于" date"的日期。对数据集进行排序,使得最近的日期是第一个,然后删除重复的观察结果,以便" voy_id" - 这样可以确保在"中有两个日期的地方,因为",您只能保留最近一次发生在航行日期之前。
max_speed
也很好奇,看看是否有人想出一种更优雅,更简约的方法。