我有两个表,报价和交易。我需要提取报价的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
}
}
}
但是,在大数据集上运行时,处理速度非常慢。有哪些替代方法可能不需要花费太多时间/效率更高?