比较两个数据帧并有条件地提取另一列的值

时间:2019-08-29 00:09:05

标签: r finance

我有两个表,报价和交易。我需要提取报价的BidPrice,其中报价的时间戳小于交易的时间戳。我该如何创建一个循环或函数来比较第一个报价时间戳,然后进行需要报价的时间戳?

我尝试过循环,嵌套循环,创建自己的函数,但结果要么是数据帧的第一个BidPrice,要么将所有BidPrices浓缩为一个向量。

for(i in 1:length(trades_reduced_f100[,3])){
  #outer loop is running. It is going up to 100
  for(j in 1:length(quotes_reduced_f100[,3])){
    while(quotes_reduced_f100$Timestamp[j] <= trades_reduced_f100$Timestamp){
      trades_reduced_f100$BidPrice[i] <- subset(quotes_reduced_f100)$BidPrice
      # print(trades_reduced_f100$BidPrice[i])
    break
    }

  }
}

我希望当循环遍历报价时间戳记时,输出将是不同的BidPrice,但是输出只是所有对象的第一个BidPrice。这意味着循环陷入了第一个引号。

更新

如示例所示,我能够使用两个嵌套的for循环来解决。

代码:

for(i in 1:length(trades_full[,3])){
  for(j in 1:length(quotes[,3])){
    if(quotes$Timestamp[j] <= trades_full$Timestamp[i] & 
       quotes$Timestamp[j+1] > trades_full$Timestamp[i]){
         trades_full$BidPrice[i] <- quotes$BidPrice[j]
    break
  } 
 }
}

但是,在大数据集上运行时,处理速度非常慢。有哪些替代方法可能不需要花费太多时间/效率更高?

0 个答案:

没有答案