Рассмотрите возможность объединения вычисляемого поля с шагом 10. В частности, рассчитайте столбец для кратных 10 в обоих наборах данных и объедините это поле с Символом .
Ниже transform
и within
используются для назначения и отмены назначения вспомогательного поля, mult10 .В этом случае использования обе базовые функции являются взаимозаменяемыми:
final_df <- transform(merge(within(quotes, mult10 = floor(Timestamp / 10) * 10),
within(trades, mult10 = floor(Timestamp / 10) * 10),
by=c("Symbol", "mult10"),
multi10 = NULL)
Теперь, если кратности 10 недостаточно для ваших потребностей, настройте уровень, который вам необходим, например 15, 5, 2 и т. Д.
within(quotes, mult10 <- floor(Timestamp / 15) * 15)
within(quotes, mult10 <- floor(Timestamp / 5) * 5)
within(quotes, mult10 <- floor(Timestamp / 2) * 2)
Более того, вам может понадобиться использовать обратное, floor
или ceiling
для обоих наборов данных, соответственно, чтобы вычислить наибольшее кратное Отметка времени и минимальное кратное сделки.Отметка времени :
within(quotes, mult10 <- ceiling(Timestamp / 15) * 15)
within(trades, mult10 <- floor(Timestamp / 5) * 5)