我目前有60万条以上的报价行,我想根据购买的商品和时间表有效地匹配它们。
在时间范围内,我的意思是从基线来看,我查看的所有提议线最多在基线之前10天或之后10天。相同产品之间的所有内容都应匹配。
但是,这是非常耗时的,并且将其运行了一整夜之后,我只得到了45000行的电话。
我知道并行性是一种选择,但是我想知道是否有更好的方法(包,函数,逻辑)。
输入数据
离线n°,客户n°,offerdate,产品 (对于某些产品,我们每天每客户每天清洁1条报价线n°) 逻辑=>将生产线与相同产品,不同客户n°匹配
所需的输出
基本客户,相关客户,报价行,匹配的报价行,产品,报价日期基础,报价日期匹配行。
当前代码
for(i in 1:nrow(X)){
sku <- X[i,]$product
date <- X[i,]$order.offer_date
cust <- X[i,]$customer_code
oon <- X[i,]$order.offer_number
F <- data.frame()
F <- X %>%
filter(product == (X[i,]$product) & (order.offer_date <= date + 10 & order.offer_date >= date - 10)& customer_code != cust)
if(nrow(F)== 0){next}
else{
for(j in 1:nrow(F)){
skuc <- F[j,]$product
datec <- F[j,]$order.offer_date
custc <- F[j,]$customer_code
oonc <- F[j,]$order.offer_number
if(custc == cust | oon == oonc){next}
else if(skuc != sku){next}
else if(skuc == sku){
if(datec <= date + 10 & datec >= date - 10){
z <- z + 1
Y[z,]$count <- j
Y[z,]$base <- oon
Y[z,]$related <- oonc
Y[z,]$baseSku <- sku
Y[z,]$relSku <- skuc
Y[z,]$basedate <- as.Date(date)
Y[z,]$reldate <- as.Date(datec)
Y[z,]$basecust <- cust
Y[z,]$relcust <- custc
}
else{next}
}
}
next
}
}