Dear Mr Adams,

Thanks a lot for your solution. I understand it was very tricky and needed lot 
of application. Thanks again and do appreciate your efforts.

Regards

Katherine

--- On Thu, 25/4/13, Adams, Jean <jvad...@usgs.gov> wrote:

From: Adams, Jean <jvad...@usgs.gov>
Subject: Re: [R] Linear Interpolation : Missing rates
To: "Katherine Gobin" <katherine_go...@yahoo.com>
Cc: "R help" <r-help@r-project.org>
Date: Thursday, 25 April, 2013, 2:23 PM

Katherine,
Split the rate names into their currency and tenor parts and assign a numeric 
value to each tenor.  Choose a model to do your approximations (I used linear 
regression in the example below).  Use this model to generate estimates for all 
combinations of currency and tenor.


For example:
# split the rate names into currency and tenorsplitnames <- do.call(rbind, 
strsplit(df$rate_name, "_"))df$currency <- as.factor(splitnames[, 1])

df$tenor <- splitnames[, 2]
# assign numeric value to each tenoruniquetenors <- c("1w", "2w", "1m", 
"2m")uniquedays <- c(7, 14, 30.5, 61)

df$tenordays <- uniquedays[match(df$tenor, uniquetenors)]
# fit a linear model of rate on tenordays for each currencyfit <- lm(rates ~ 
currency*tenordays, data=df)


# estimate rates for all combinations of currency and tenorfulldf <- 
expand.grid(tenordays=unique(df$tenordays), 
currency=unique(df$currency))fulldf$est.rates = predict(fit, newdata=fulldf)


# merge observed rates with estimated ratesdfwithest <- merge(df, fulldf, 
all=TRUE)
Jean



On Thu, Apr 25, 2013 at 12:33 AM, Katherine Gobin <katherine_go...@yahoo.com> 
wrote:


Dear R forum



I have data.frame as



df = data.frame(rate_name = c("USD_1w", "USD_1w", "USD_1w", "USD_1w", "USD_1m", 
"USD_1m", "USD_1m", "USD_1m", "USD_2m", "USD_2m", "USD_2m", "USD_2m",  
"GBP_1w", "GBP_1w", "GBP_1w", "GBP_1w", "GBP_1m", "GBP_1m", "GBP_1m", "GBP_1m", 
"GBP_2m", "GBP_2m", "GBP_2m", "GBP_2m", "EURO_1w", "EURO_1w", "EURO_1w", 
"EURO_1w", "EURO_2w", "EURO_2w", "EURO_2w", "EURO_2w", "EURO_2m", "EURO_2m", 
"EURO_2m", "EURO_2m"), rates = c(2.05, 2.07, 2.06, 2.06, 2.22, 2.24, 2.23, 
2.23, 2.31, 2.33, 2.33, 2.31, 1.06, 1.08, 1.08, 1.08, 1.21, 1.21, 1.23, 1.21, 
1.41, 1.39, 1.39, 1.37, 1.82, 1.82, 1.81, 1.80, 1.98, 1.98, 1.97, 1.97, 2.1, 
2.09, 2.09, 2.11))





currency = c("EURO", "GBP", "USD")

tenor = c("1w", "2w", "1m", "2m", "3m")



# _________________________________________



> df

   rate_name rates

   rate_name rates

1     USD_1w  2.05

2     USD_1w  2.07

3     USD_1w  2.06

4     USD_1w  2.06

5     USD_1m  2.22

6     USD_1m  2.24

7     USD_1m  2.23

8     USD_1m  2.23

9     USD_2m  2.31

10    USD_2m  2.33

11    USD_2m  2.33

12    USD_2m  2.31

13    GBP_1w  1.06

14    GBP_1w  1.08

15    GBP_1w  1.08

16    GBP_1w  1.08

17    GBP_1m  1.21

18    GBP_1m  1.21

19    GBP_1m  1.23

20    GBP_1m  1.21

21    GBP_2m  1.41

22    GBP_2m  1.39

23    GBP_2m  1.39

24    GBP_2m  1.37

25   EURO_1w  1.82

26   EURO_1w  1.82

27   EURO_1w  1.81

28   EURO_1w  1.80

29   EURO_2w  1.98

30   EURO_2w  1.98

31   EURO_2w  1.97

32   EURO_2w  1.97

33   EURO_2m  2.10

34   EURO_2m  2.09

35   EURO_2m  2.09

36   EURO_2m  2.11



As can be seen that USD_2w, GBP_2w and EURO_1m are missing and I need to 
INTERPOLATE these rates, which can be done using approx or approxfun. In 
reality I can have many currencies with many tenors. Problem is when the 
data.frame "df" is read or accessed in R, I am not aware which tenor is 
missing. For a given currency, it is possible that mare than 1 consecutive 
tenors may be missing e.g. in case of EURO, I may have EURO_1w, EURO_2w and 
then EURO_4m. So EURO_1m, EURO_2m and EURO_3m are missing.







I understand it's sort of vague question from me and do apologize for the same. 
Any suggestion please.



Regards



Katherine











        [[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.





        [[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.

Reply via email to