将矩阵的每一行与其余行进行比较

时间:2018-02-06 17:44:20

标签: r loops if-statement processing-efficiency

我想询问是否有一种有效的方法来比较数据帧的每一行与其余行。目前我正在运行以下代码,但需要数天才能完成。提供更多细节:

我有一个包含166,000行的表(每行是一个订单),有4列:

Column1 :订单号(订单的主键)
Column2 :订单类型
Column3 :客户编号(订单的主键)
第4栏:订单日期

我想识别在 Z 类型的订单的3天内(> = 0和< = 3)进行的订单(不是类型 Z )强>(由同一客户)。因此,例如,如果我今天和明天订购的类型为 Z ,我会发出不是 Z 的第二个订单,我想确定第二个订单。实际上,我希望客户在订单类型 Z 的3天内完成所有订单。

我使用的代码是:

n<-nrow(data)
d<-character(n)
condition1<-data$OrderType != "Z"
condition2<-data$OrderType == "Z"
data[,4]<-as.Date(data[,4])

for (i in 1 :n ){

  if(condition1[i]) {  ## not type Z

  for (j in 1 : n)     {             

    if (condition[j])      {  ## type Z

    if (data[i, 1] != data[j, 1] & data[i, 3] == data[j, 3] ) {  ## I dont compare it with itself & from the same customer

      if(as.numeric(data[i, 4] - data[j, 4]) <= 3 &  as.numeric(data[i, 4] - data[j, 4]) >= 0 ) {

        d[i] <- as.character(data[i, 1])
                                                                                                }
                                                                 }
                          } 
                        }  
                     }
                  }

非常感谢任何帮助!

0 个答案:

没有答案