使用 R 进行数据操作

Data Manipulation with R

我有一个问题,我发现自己没有及时解决。真的很感谢任何帮助,因为我认为这里的一些专业人士只是几行代码。

我的数据包含超过 2 mio。行交易。我想对数据做一些关联规则。

我只对涉及产品 (P_ID) "PANDORA" 并且我认识客户 (c_ID) 的交易 (t_ID) 感兴趣。我举了个例子:

> T_ID <- c(10,10,10,11,12,13,13)
> P_ID <- c("PANDORA", "Others", "Pan","PANDORA","Ham", "PANDORA","Ham")
> c_ID <- c(1,1,1,2,-1,4,4)
> basket <- data.frame(T_ID,P_ID,c_ID)
> basket
T_ID    P_ID c_ID
1   10 PANDORA    1
2   10  Others    1
3   10     Pan    1
4   11 PANDORA    2
5   12     Ham   -1
6   13 PANDORA    4
7   13     Ham    4

事务 10 包含产品 "Pandora",因此所有 3 行都应保留在数据集中。虽然事务 12 没有附加客户,但需要将其删除。

我最纠结的部分是如何保留与包含 "PANDORA" 的同一交易 ID 相关但存储了另一个产品的交易行。

非常感谢任何帮助,

此致, 克里斯蒂安

也许这有帮助:

keep_IDs <- basket$T_ID[with(basket, P_ID=="PANDORA" & c_ID!=-1)]
basket[basket$T_ID %in% keep_IDs,]
#  T_ID    P_ID c_ID
#1   10 PANDORA    1
#2   10  Others    1
#3   10     Pan    1
#4   11 PANDORA    2
#6   13 PANDORA    4
#7   13     Ham    4

数据

basket <- structure(list(T_ID = c(10L, 10L, 10L, 11L, 12L, 13L, 13L, 14L, 14L), 
P_ID = structure(c(6L, 4L, 5L, 6L, 1L, 6L, 1L, 3L, 2L), 
.Label = c("Ham","Honey", "Nugget", "Others", "Pan", "PANDORA"), class = "factor"), 
c_ID = c(1L, 1L, 1L, 2L, -1L, 4L, 4L, 5L, 5L)), 
.Names = c("T_ID", "P_ID", "c_ID"), class = "data.frame", 
row.names = c("1", "2", "3", "4", "5", "6", "7", "8", "9"))

是否每笔交易只有一个customer id?我假设是这样。

第一步是删除那些没有客户 ID 的行。

cleanbasket = basket[bucket$c_ID != -1,]

接下来,我们要确定哪些交易包含 PANDORA。

transactions = unique(basket$T_ID[basket$P_ID == "PANDORA"])

然后获取这些交易的所有行

cleanbasket = cleanbasket[cleanbasket$T_ID %in% transactions,]