使用以下数据集,如何编写一个data.table调用,该子集对此表进行子集并返回该客户的所有客户ID和相关订单,如果客户购买了SKU 1?
预期结果应该返回一个表格,该表格在该条件下排除cid 3和5,并且匹配sku的客户的每一行== 1.
我因为不知道怎么写"包含"语句而陷入困境,== literal只返回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)
Run Code Online (Sandbox Code Playgroud)
这类似于之前的答案,但这里的子集以更data.table
类似的方式工作.
首先,让我们采取符合我们条件的cids:
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
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
9371 次 |
最近记录: |