我有一个包含购买数据的数据集,我一直在试图弄清楚一些事情。在开始之前,我的数据如下所示:
> df.f[df.f$CUST_ID == badIDs[1], c(1, 20, 4, 11, 13)]
CUST_ID CI2_TRANS_DT HR_SID NDS_AMT PROD_NUM
1 2013-12-14 10 0.00 a5g4324
1 2013-12-14 10 0.00 k4jn42k
1 2013-12-14 10 0.00 f3ft52f3
1 2013-12-14 10 0.00 f454fn
1 2013-12-14 10 0.00 l2k41m
1 2013-12-14 10 2.25 nb24b2x3
1 2013-12-14 10 0.00 k1s4m6
1 2013-12-14 10 0.00 1z34fl
1 2013-12-14 10 0.95 f3ft52f3
1 2013-12-17 6 4.45 v0d45j
1 2013-12-17 6 0.00 a5g4324
1 2013-12-17 6 4.75 g6b673va
1 2013-12-17 6 0.00 f454fn
1 2013-12-19 7 -4.75 bh431d11
1 2013-12-20 6 4.75 bh431d11
2 2013-12-14 6 4.75 g6b673va
2 2013-12-15 6 3.75 nb24b2x3
2 2013-12-15 6 -3.75 nb24b2x3
2 2013-12-16 6 5.90 bh431d11
上述变量依次是客户 ID 号、交易日期、一天中的时间、销售金额和产品编号。我遇到的问题是 NDS_AMT 的负值。如果值为负,我需要检查是否有相应的购买,如果有,那么负值可以保留。如果没有相应的购买,那么我需要从我的数据中删除该记录。例如,需要删除倒数第二个记录,因为它是负数,并且同一天没有相应的购买。第二天购买了相同的产品,但由于它们是在两次不同的访问中,因此它们不能算作相应的购买。
我尝试过思考如何做到这一点,并考虑过嵌入的应用函数、相交函数或重复函数,但不管是什么函数,我都无法掌握如何编写代码。任何帮助将不胜感激。
编辑:根据 Henrik 的要求,我已为具有负 NDS_AMT 的新客户的数据添加了四个新行,其中记录应保留在数据中。“对应购买”的条件是 CUST_ID、CI2_TRANS_DT、HR_SID 和 PROD_NUM 的值都必须与 NDS_AMT 小于 0 的记录匹配。