通过变量匹配两个数据集

时间:2019-04-06 18:12:23

标签: r filter matching

我在交易平台上有两个买卖订单数据集,如下所示:

buy[45:50,]

 NO      SECCODE BUYSELL  TIME ORDERNO ACTION    PRICE VOLUME TRADENO TRADEPRICE
45 7880 SU25077RMFS7       B 1e+08    7880      1  98.4001    250      NA         NA
46 7976 SU24018RMFS2       B 1e+08    7976      1  101.9989      4      NA         NA
47 8314 SU52001RMFS3       B 1e+08    8314      1  94.6000    200      NA         NA
48 8607 SU29009RMFS6       B 1e+08    8607      1 101.4000     22      NA         NA
49 8735 SU29009RMFS6       B 1e+08    8735      1 101.4000      2      NA         NA
50 8915 SU26206RMFS1       B 1e+08    8915      1  91.0002    225      NA         NA

sell[45:50,]

       NO      SECCODE BUYSELL      TIME ORDERNO ACTION    PRICE VOLUME    TRADENO TRADEPRICE
45 18767 SU26215RMFS2       S 100004130   13929      1  77.7410      6         NA         NA
46 18831 SU26205RMFS3       S 100004156   13959      1  84.4680      3         NA         NA
47 30345 SU26211RMFS1       S 100009446   19505      1  82.1999      7         NA         NA
48 48387 SU24018RMFS2       S 100015879    3865      2 101.9989      4 2516559570   101.9989
49 54854 SU26212RMFS9       S 100019214    8920      0  77.2499     58         NA         NA
50 55493 SU26212RMFS9       S 100019734   31671      1  74.6999     58         NA         NA

我需要通过比较“购买”中的所有行和“出售”中的所有行来找到PRICE中的所有匹配项。例如,第一数据集的行46中的PRICE与第二数据集的行48中的PRICE一致。 预期的输出是将相应行合并为单行的数据帧,即从第一个数据集的第46行和第二个数据集的第48行中排成一行(老实说,我什至不关心输出如何看起来就像,我只需要找到对应订单的时间和价格。

我尝试过

d <- data[data$PRICE %in% intersect (sell$PRICE, buy$PRICE),]

其中data同时包含“购买”和“出售”定单,但不起作用。据我了解,matchfind.matches仅比较相应的行,但是我需要比较“购买”中的所有行和“出售”中的所有行。 如果有人已经问过类似的问题,我很抱歉,但是我找不到类似的问题。

1 个答案:

答案 0 :(得分:0)

您可以将merge()函数与all = True一起使用

alldata <- merge(x= buy, y= sell , by = "PRICE", all = TRUE)