An embedded and charset-unspecified text was scrubbed... Name: not available URL: <https://stat.ethz.ch/pipermail/r-help/attachments/20120926/2936baa0/attachment.pl>
Change in order of names after applying "plyr" package
2 messages · Vincy Pyne, jim holtman
Here is one of the places that you need a 'factor' to create the ordering you want; notice the statement that I added:
equity_data = data.frame(security_id = c("Air", "Air", "Air", "Air"
+ , "Air", "Air", "Air", "Air", "Air", "Air", "Air", "Air", "AB"
+ , "AB", "AB", "AB", "AB", "AB", "AB", "AB", "AB", "AB", "AB"
+ , "AB", "AD", "AD", "AD", "AD", "AD", "AD", "AD", "AD", "AD"
+ , "AD", "AD", "AD")
+ , ason_date = c("10-Jan-12","9-Jan-12","8-Jan-12", "7-Jan-12"
+ , "6-Jan-12","5-Jan-12","4-Jan-12","3-Jan-12","2-Jan-12"
+ ,"1-Jan-12", "31-Dec-11", "30-Dec-11", "10-Jan-12","9-Jan-12"
+ ,"8-Jan-12", "7-Jan-12", "6-Jan-12","5-Jan-12","4-Jan-12"
+ ,"3-Jan-12","2-Jan-12","1-Jan-12", "31-Dec-11", "30-Dec-11"
+ , "10-Jan-12","9-Jan-12","8-Jan-12", "7-Jan-12", "6-Jan-12"
+ ,"5-Jan-12","4-Jan-12","3-Jan-12","2-Jan-12","1-Jan-12"
+ , "31-Dec-11", "30-Dec-11")
+ , security_rate = c(0.597,0.61,0.6,0.63,0.67,0.7,0.74,0.735
+ , 7.61,0.795,0.796, 0.84, 8.5,8.1,8.9,8.9,8.9,9,9,9,9,9,9,9
+ ,3.21,3.22,3.12, 3.51, 3.5, 3.37, 3.25, 3, 3.07, 3, 2.94, 2.6)
+ )
# create a factor with the specified ordering equity_data$security_id <- factor(equity_data$security_id
+ , levels = c("Air", "AB", "AD")
+ )
Here are the results:
result_method_other
$Air [1] 6.229422 $AB [1] 0.2355425 $AD [1] 0.2918782 attr(,"split_type") [1] "data.frame" attr(,"split_labels") security_id 1 Air 2 AB 3 AD
On Wed, Sep 26, 2012 at 4:55 AM, Vincy Pyne <vincy_pyne at yahoo.ca> wrote:
Dear R helpers
I have following two data.frames viz. equity_data and param.
equity_data = data.frame(security_id = c("Air", "Air", "Air", "Air", "Air", "Air", "Air", "Air", "Air", "Air", "Air", "Air", "AB", "AB", "AB", "AB", "AB", "AB", "AB", "AB", "AB", "AB", "AB", "AB", "AD", "AD", "AD", "AD", "AD", "AD", "AD", "AD", "AD", "AD", "AD", "AD"), ason_date = c("10-Jan-12","9-Jan-12","8-Jan-12", "7-Jan-12", "6-Jan-12","5-Jan-12","4-Jan-12","3-Jan-12","2-Jan-12","1-Jan-12", "31-Dec-11", "30-Dec-11", "10-Jan-12","9-Jan-12","8-Jan-12", "7-Jan-12", "6-Jan-12","5-Jan-12","4-Jan-12","3-Jan-12","2-Jan-12","1-Jan-12", "31-Dec-11", "30-Dec-11", "10-Jan-12","9-Jan-12","8-Jan-12", "7-Jan-12", "6-Jan-12","5-Jan-12","4-Jan-12","3-Jan-12","2-Jan-12","1-Jan-12", "31-Dec-11",
"30-Dec-11"), security_rate = c(0.597,0.61,0.6,0.63,0.67,0.7,0.74,0.735, 7.61,0.795,0.796, 0.84, 8.5,8.1,8.9,8.9,8.9,9,9,9,9,9,9,9,3.21,3.22,3.12, 3.51, 3.5, 3.37, 3.25, 3, 3.07, 3, 2.94, 2.6))
param = data.frame(confidence_level = c(0.99), holding_period = c(10), calculation_method = "MC", no_simulation_mc = c(100))
library(plyr)
library(reshape2)
attach(equity_data)
attach(param)
security_names = unique(equity_data$security_id)
# (security_names are used further in R code not included here)
alpha = param$confidence_level
t = param$holding_period
n = param$no_simulation_mc
method = param$calculation_method
mc_VaR = function(security_id, ason_date, security_rate)
{
security_rate_returns <- NULL
for (i
in(1:length(ason_date)-1))
{
security_rate_returns[i] = log(security_rate[i]/security_rate[i+1])
}
return_mean = mean(security_rate_returns)
return_sd = sd(security_rate_returns)
simulation = rnorm(n, return_mean, return_sd)
qq = sort(simulation, decreasing = TRUE)
VaR_mc = -qq[alpha * n]*sqrt(t)
return(VaR_mc)
}
result_method_other <- dlply(.data = equity_data, .variables = "security_id", .fun = function(x)
mc_VaR(ason_date = x$ason_date, security_id = x$security_id,
security_rate = x$security_rate))
result_method_other
$AB
[1] 0.2657424
$AD
[1] 0.212061
$Air
[1] 6.789733
attr(,"split_type")
[1] "data.frame"
attr(,"split_labels")
security_id
1 AB
2 AD
3 Air
MY PROBLEM :
My original data (i.e. equity_data) has the order of "Air", "AB" and "AD". However, after applying plyr, my order (and corresponding result) has changed to "AB", "AD" "Air".
I need to
maintain my original order of "Air", "AB" and "AD". How do I modify my R code for this?
Kindly guide
Vincy
[[alternative HTML version deleted]]
______________________________________________ R-help at 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.
Jim Holtman Data Munger Guru What is the problem that you are trying to solve? Tell me what you want to do, not how you want to do it.