gpt4 book ai didi

r - 在多个条件下的R data.table子集。

转载 作者:行者123 更新时间:2023-12-04 13:40:02 24 4
gpt4 key购买 nike

使用以下数据集,如果客户曾经购买过SKU 1,该如何编写一个data.table调用来对该表进行子集化,并返回该客户的所有客户ID和关联的订单?

预期结果应返回一个表,该表不包含该条件下的cid 3和5,并且与sku == 1匹配的客户的每一行。

我被卡住了,因为我不知道如何编写“包含”语句,==文字仅返回sku的匹配条件...我相信还有更好的方法。

library("data.table")    
df<-data.frame(cid=c(1,1,1,1,1,2,2,2,2,2,3,4,5,5,6,6),
order=c(1,1,1,2,3,4,4,4,5,5,6,7,8,8,9,9),
sku=c(1,2,3,2,3,1,2,3,1,3,2,1,2,3,1,2))

dt=as.data.table(df)

最佳答案

这类似于previous answer,但是在这里,子设置以类似于data.table的方式工作。

首先,让我们满足条件的条件:
matching_cids = dt[sku==1, cid]%in%运算符允许我们仅过滤列表中包含的那些项。因此,使用上面的代码:
dt[cid %in% matching_cids]
或一行:

> dt[cid %in% dt[sku==1, cid]]
cid order sku
1: 1 1 1
2: 1 1 2
3: 1 1 3
4: 1 2 2
5: 1 3 3
6: 2 4 1
7: 2 4 2
8: 2 4 3
9: 2 5 1
10: 2 5 3
11: 4 7 1
12: 6 9 1
13: 6 9 2

关于r - 在多个条件下的R data.table子集。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20086929/

24 4 0