2つのデータテーブルを結合して、パートのpart_IDを取得する必要があります。パートが失敗するかどうかを予測する必要があります(part_IDはテストデータにありません)。私はテーブルを正しく結合するのに苦労しています。IDと日付に基づくRの結合テーブル、複雑なローリング結合?
機械には、part_A、part_B、Part_C、part_Dの4つの部分があります。私は現在、それぞれがインストールされた日付(日付表)と、タイムスタンプが2番目の部分(SensorData)に対応する毎秒の測定値を持っています。 part_ID 0が2011年1月1日にインストールされ、part_Bが2/2/2016にインストールされていれば、part_Aが削除されたことを意味するわけではありません(ただし、私は解決しようとしている問題の一部ではありません)が削除されました。以下に示すように、2つのテーブルを結合して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
解決策は正しいパスのように見えますが、次のエラーが表示されます。 – DerekB77
'vecseqのエラー(f__、len__、if(allow.cartesian || notjoin ||!anyDuplicated(f__、: )2981318行の結果が428002 = nrow(x)+ nrow(i) xの同じグループに何度も何度も参加しているキー値を返します。大丈夫なら、大きな割り当てを避けるために、各グループに対してjを実行するように.EACHIを試してください。 allow.cartesian = TRUEを指定してください。そうでない場合は、FAQ、Wiki、Stack Overflow、datatable-helpの中でこのエラーメッセージを探してください。 ' – DerekB77
ok ..エラーメッセージを読んでください.. – eddi