I have a price dataframe dat
and a second dataframe with currencies cur
. What i want to do is to transform every non-EUR price in dat
into
The problem with your code is that you are comparing a vector against a character in if (dat$Nation == cur$Nation[i])
, so the error tells you that it will only compare the first element of dat$Nation
with cur$Nation[i]
.
In R, for-loops are often not necessary (and slow). You could do for example the following:
dat$conv <- cur$Rate[match(dat$Nation,cur$Nation)] # add the conversion factor
dat$PriceE <- ifelse(is.na(dat$conv), dat$Price, dat$Price * dat$conv)
dat$conv <- NULL
Output:
Nation Price PriceE
1 AT 10 10.000
2 AT 12 12.000
3 BE 15 15.000
4 BG 30 15.300
5 BG 40 20.400
6 CZ 200 7.836
Hope this helps!