【发布时间】:2016-10-14 21:25:04
【问题描述】:
我必须连接两个数据表来获取一个零件的part_ID,我需要预测该零件是否会失败(part_ID 不在测试数据中)。我正在努力正确地加入表格。
机器有 4 件处于活动状态,part_A、part_B、Part_C、part_D。我目前有每个安装的日期(日期表)和每秒进行的测量,这些测量对应于以秒为单位的时间戳(SensorData)的部分。我可以对 machine_ID 和添加 Part_ID 的日期进行滚动连接,但如果 part_ID 0 安装于 2016 年 1 月 1 日,part_B 安装于 2016 年 2 月 2 日,这并不意味着 part_A 已被删除(尽管它可以已经),只是添加了另一部分并删除了某些内容(不是我要解决的问题的一部分)。如何连接这两个表以保留 part_B 和 part_B 的数据,如下所示。
SensorData
ID timestamp v1 v2 v3 ... v28 Machine_ID
1 1/1/2016 12:00:13 .001 .123 1.3 ... 24.6 23
2 1/1/2016 12:00:14 .002 .122 1.2 ... 24.9 14
3 1/1/2016 12:00:15 .005 .025 NA ... 23.1 6
4 1/2/2016 12:00:15 .005 .025 NA ... 23.1 6
Dates
InstallDate Part_ID Machine_ID
1/1/2016 0 23
1/1/2016 2 14
1/1/2016 16 6
1/2/2016 24 6
Results
ID timestamp v1 v2 v3 ... v28 Machine_ID Part_A Part_B
1 1/1/2016 12:00:13 .001 .123 1.3 ... 24.6 23 0 NA
2 1/1/2016 12:00:14 .002 .122 1.2 ... 24.9 14 2 NA
3 1/1/2016 12:00:15 .005 .025 NA ... 23.1 6 16 NA
4 1/2/2016 12:00:15 .005 .025 NA ... 23.1 6 16 24
首选 data.table 解决方案,但我愿意接受任何解决方案。数据已经被粉碎和压缩到这一点,所以它大约有 100,000 行,所以任何解决方案都可以不管速度如何工作。
这目前部分有效:
setkey(Dates, Machine_ID, InstallDate)
setkey(SensorData, Machine_ID, timestamp)
dx<-SensorData[Dates, roll=T]
但这假设 Part_A 已被移除,Part_B 已安装并生成如下表:
IncorrectResults
ID timestamp v1 v2 v3 ... v28 Machine_ID Part_A
1 1/1/2016 12:00:13 .001 .123 1.3 ... 24.6 23 0
2 1/1/2016 12:00:14 .002 .122 1.2 ... 24.9 14 2
3 1/1/2016 12:00:15 .005 .025 NA ... 23.1 6 16
4 1/2/2016 12:00:15 .005 .025 NA ... 23.1 6 24
【问题讨论】:
标签: r join data.table