如何基于R

时间:2018-06-22 08:47:38

标签: r loops

我目前有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
  }
}

0 个答案:

没有答案