Мы можем использовать mapply
для var1
и var2
из test
, чтобы отфильтровать строку и столбец соответственно test2
, чтобы получить спот-курс для этой конкретной валюты в определенный день.Как только мы получим spot_rate
, мы можем умножить его на var3
и var4
.
spot_rate = mapply(function(x, y) test2[x == test2$date, y == names(test2)],
test$var1, test$var2)
spot_rate
#[1] 2.0 1.0 3.0 0.6 1.0
test$var3 * spot_rate
#[1] 20.0 30.0 132.0 33.6 45.0
test$var4 * spot_rate
#[1] 6.0 8.0 27.0 6.6 22.0
Мы также можем получить spot_rate
, используя match
, что более или менее одинаковооперация.
mapply(function(i, j) test2[i, j], match(test$var1, test2$date),
match(test$var2, names(test2)))
#[1] 2.0 1.0 3.0 0.6 1.0