我对R非常新,特别是data.table
,我坚持以下。基于第二个data.table与否定过滤命令
我有2个data.tables,说“食堂”和“沙拉消费者”。 data.table“食堂”包含每个人的ID,日期,时间和物品。
第二data.table“Saladconsumer”中包含的谁买了一个沙拉,基本上是“食堂”的一个子集人ID,日期和时间。
现在,我想,这样我得到的已经买在那一天沙拉和当天在食堂做了其他购买人过滤“食堂”的“Saladconsumer”。因此过滤必须包含一个否定:Canteen[, ID]==Saladconsumer[, ID] & Canteen[, date]==Saladconsumer[, date] & Canteen[, time]!=Saladconsumer[, time]
。
我只找到重叠和合并/连接的例子,如果所有的标准是相同的。这似乎是很简单,但我想不出我的错误是什么...
NewDT<- Canteen[, Canteen[, ID ] == Saladconsumer [, ID ] & Canteen[, date ] == Saladconsumer[, date ] & Canteen[, time ] == Saladconsumer [, time ]]
这是什么数据的模样,什么结果我在寻找:
Canteen
ID Date Time
00b47c5d83a5490e860086eb080f1f50 26.06.14 12:36:29
00b47c898875483fb9fa0113d334e500 06.01.14 16:28:56
00b4cb6c666e2b8152174479545fcef2 29.10.14 12:57:16
00b4cb6c666e2b8152174479545fcef2 29.10.14 17:20:07
00b64cef0230b7480fc96dfcad9b8394 07.05.14 11:43:34
00b8b859987af5c89d90130d1206c579 03.01.14 13:35:15
0205996c0139e0b909903c2ebacb5a77 07.01.14 14:48:13
0205d25db373084f9bf8d431db8d3f9c 07.01.14 09:10:27
0205d25db373084f9bf8d431db8d3f9c 07.01.14 13:48:21
0208cfa78e51231cf30842ea0f8abdf4 10.04.14 10:06:43
Salad consumer
ID Date Time
00b4cb6c666e2b8152174479545fcef2 29.10.14 12:57:16
0205d25db373084f9bf8d431db8d3f9c 07.01.14 13:48:21
020e53bd2076a9db4c9770662793602b 04.02.14 10:38:41
020ed0685aa70b543981cbb6a7f0c737 16.01.14 15:40:02
020aa996e0f4b6e886a82ce83d406e92 23.01.14 14:23:43
020ac1d718ff47f5aaa2d684434bae93 30.06.14 13:47:45
020b20874ae29027ddac149ab3d5a395 09.04.14 09:34:32
Results
ID Date Time
00b4cb6c666e2b8152174479545fcef2 29.10.14 17:20:07
0205d25db373084f9bf8d431db8d3f9c 07.01.14 09:10:27
没有,有没有这样的合并命令。您可以合并所有列,创建一个1/0列来指示哪些匹配,然后过滤到相反的。显然,我只能用这些模糊的词汇来解释它,因为你并不愿意提供一个例子。请参阅http://stackoverflow.com/help/how-to-ask – Frank