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.pi...@precheza.cz> wrote: From: Petr PIKAL <petr.pi...@precheza.cz> Subject: Odp: Currency return calculations To: "Amelia Vettori" <amelia_vett...@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_vett...@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]]
______________________________________________ R-help@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.