My mistake sir. I was literally engrossed in my stupid logic, and while doing
so, overlooked the simple and very effective solution you had offered. Sorry
once again sir and will certainly try to be very careful in future.
Thanks again and have a great weekend sir.
Regards
Amelia
--- On Fri, 7/1/11, Petr PIKAL <petr.pikal@precheza.cz> wrote:
From: Petr PIKAL <petr.pikal@precheza.cz>
Subject: Odp: Currency return calculations
To: "Amelia Vettori" <amelia_vettori@yahoo.co.nz>
Cc: r-help@r-project.org
Received: Friday, 7 January, 2011, 12:59 PM
Hi
What is wrong with my suggestion
then.
> rate1
USD GBP EURO CHF AUD
1 112.05 171.52 42.71 41.50 109.55
2 112.90 168.27 42.68 41.47 102.52
3 110.85 169.03 41.86 42.84 114.91
4 109.63 169.64 44.71 43.44 122.48
5 108.08 169.29 44.14 43.69 122.12
6 111.23 169.47 44.58 42.30 123.96
7 112.49 170.90 41.07 42.05 100.36
8 108.87 168.69 42.23 41.23 110.19
9 109.33 170.90 44.55 42.76 121.58
10 111.88 169.96 41.12 43.79 103.46> portfolio<-c("USD", "USD", "CHF",
"AUD", "USD")
> log(rate1[-1,portfolio]/rate1[-nrow(rate1),portfolio])
USD USD.1 CHF AUD USD.2
2 0.007557271 0.007557271 -0.000723153 -0.066323165
0.007557271
3 -0.018324535 -0.018324535 0.032501971 0.114091312 -0.018324535
4 -0.011066876 -0.011066876 0.013908430 0.063798538 -0.011066876
5 -0.014239366 -0.014239366 0.005738567 -0.002943583 -0.014239366
6 0.028728436 0.028728436 -0.032332157 0.014954765 0.028728436
7 0.011264199 0.011264199 -0.005927700 -0.211195211 0.011264199
8 -0.032709819 -0.032709819 -0.019693240 0.093442427 -0.032709819
9 0.004216322 0.004216322 0.036436939 0.098366334 0.004216322
10 0.023056037 0.023056037 0.023802395 -0.161387418
0.023056037>
As I said instead fiddling with several loop/if/function/variables attempt
it seems to me better to use powerful R indexing and "whole object"
approach where it is
possible.
Regards
Petr
Amelia Vettori <amelia_vettori@yahoo.co.nz> napsal dne 07.01.2011
13:46:53:
> Dear sir, I am extremely sorry for messing up the logic asking for help
w.r.t.> my earlier mails
>
> I have tried to explain below what I am looking for.
>
>
> I have a database (say, currency_rates) storing datewise currency
exchange > rates with some base currency XYZ.
>
> currency_rates <- data.frame(date = c("12/31/2010",
"12/30/2010",
"12/29/> 2010", "12/28/2010",
"12/27/2010","12/24/2010", "12/23/2010",
"12/22/2010", > "12/21/2010", "12/20/2010"),
> USD = c(112.05, 112.9, 110.85, 109.63, 108.08, 111.23, 112.49, 108.87,
109.33, 111.88),> GBP = c(171.52, 168.27,169.03, 169.64, 169.29,
169.47, 170.9, 168.69,
170.9, 169.96),> EURO = c(42.71, 42.68, 41.86, 44.71, 44.14, 44.58, 41.07, 42.23, 44.55,
41.12),> CHF = c(41.5, 41.47, 42.84, 43.44, 43.69, 42.3, 42.05, 41.23, 42.76,
43.79),> AUD = c(109.55, 102.52, 114.91, 122.48, 122.12, 123.96, 100.36, 110.19,
121.> 58, 103.46))
>
> I have a portfolio consisting of some of these currencies.
>
> At this moment, suppose my portfolio has following currency
transactions. i.e > following is my current portfolio and
> has 2 USD transactions, 2 EURO transactions and a CHF transactions.
>
> portfolio_currency_names = c("USD", "USD",
"EURO", "CHF", "EURO", "USD")
>
>
> # ____________________________________
>
> My objective is AS PER THE PORTFOLIO, I need to generate a data.frame
giving > respective currency returns.
>
> Thus, I need
to have an output like>
> USD USD EURO CHF
> EURO USD
> -0.0076 -0.0076 0.0007 0.0007 0.
> 0007 -0.0076
> 0.0183 0.0183 0.0194 -0.0325 0.
> 0194 0.0183
> 0.0111 0.0111 -0.0659
-0.0139 -0.> 0659 0.0111
> 0.0142 0.0142 0.0128 -0.0057 0.
> 0128 0.0142
> -0.0287 -0.0287 -0.0099 0.0323 -0.
> 0099 -0.0287
> -0.0113 -0.0113 0.0820 0.0059 0.
> 0820 -0.0113
> 0.0327 0.0327
-0.0279 0.0197 -0.> 0279 0.0327
> -0.0042 -0.0042 -0.0535 -0.0364 -0.
> 0535 -0.0042
> -0.0231 -0.0231 0.0801 -0.0238 0.
> 0801 -0.0231
>
> Thus, my requirement is to have the dataframe as per the composition of
my > portfolio. Thus, if there are only 2 transactions i.e. if my portfolio
> contains say only CHF and AUD, I need the return calculations done only
forCHF and AUD.>
>
>
CHF AUD> 0.0007 0.0663
> -0.0325 -0.1141
> -0.0139 -0.0638
> -0.0057 0.0029
> 0.0323 -0.0150
> 0.0059 0.2112
> 0.0197 -0.0934
> -0.0364 -0.0984
> -0.0238 0.1614
>
> I once again apologize for not asking my requirement properly thereby
causing > not only inconvenience to all of you, but also wasting your valuable
time. Its> not that I wasn't careful while asking for
guidance for my requirement,
I > wasn't clear about it. I am sorry for the same once again.
>
> I request you to please help me.
>
> Amelia Vettori
>
>
>
[[alternative HTML version deleted]]