On Sep 3, 2010, at 6:32 AM, Sarah Sanchez wrote:
Dear R helpers
I have following dataset
rate_number = matrix(c(5, 15, 60, 15, 5, 0, 20, 60, 20,0, 10, 20,
40, 20, 10), nrow = 5, ncol = 3)
range_mat = matrix(c(6.25, 6.75, 7.25, 8.75, 9.25, 9.75, 8.5, 9,
9.5, 10.5, 11, 11.5, 4.25, 4.75, 5.25, 5.75, 6.25, 6.75), nrow = 6,
ncol = 3)
rate_number
[,1] [,2] [,3]
[1,] 5 0 10
[2,] 15 20 20
[3,] 60 60 40
[4,] 15 20 20
[5,] 5 0 10
range_mat
[,1] [,2] [,3]
[1,] 6.25 8.5 4.25
[2,] 6.75 9.0 4.75
[3,] 7.25 9.5 5.25
[4,] 8.75 10.5 5.75
[5,] 9.25 11.0 6.25
[6,] 9.75 11.5 6.75
My problem is to generate random numbers in line with rate_number
and using the range_mat. E.g.
I need to generate (5, 15, 60, 15, 5 i.e. the first column of
rate_number) uniform random numbers (using 1st column of range_mat)
s.t the first 5 numbers will be in the range (6.25 - 6.75), next 15
numbers should be in the range (6.75 to 7.25), next 60 numbers
should be in the range (7.25 to 8.75), next 15 numbers in the range
(8.75 to 9.25) and last 5 numbers in the range (9.25 to 9.75).
This should do it for the first column and modifying to for additional
columns should be straightforward:
> mapply(runif, rate_number[,1], range_mat[1:5,1], range_mat[2:6,1])
#---------
rlist <- list()
for (i in 1:ncol(rate_number) ) rlist[[i]] <-mapply(runif,
rate_number[,i], range_mat[1:5,i], range_mat[2:6,i])
> str(rlist)
List of 3
$ :List of 5
..$ : num [1:5] 6.38 6.66 6.65 6.27 6.69
..$ : num [1:15] 6.81 7.05 6.98 7.03 7.12 ...
..$ : num [1:60] 7.34 8.4 7.95 8.53 8.12 ...
..$ : num [1:15] 9.25 8.91 8.91 8.77 9.01 ...
..$ : num [1:5] 9.58 9.49 9.34 9.61 9.29
$ :List of 5
..$ : num(0)
..$ : num [1:20] 9.23 9.47 9.42 9.36 9.06 ...
..$ : num [1:60] 10.06 9.81 9.58 10.28 9.69 ...
..$ : num [1:20] 10.9 10.8 10.6 10.5 11 ...
..$ : num(0)
$ :List of 5
..$ : num [1:10] 4.36 4.58 4.56 4.27 4.72 ...
..$ : num [1:20] 5.15 5.09 4.99 4.98 5.06 ...
..$ : num [1:40] 5.71 5.35 5.26 5.41 5.58 ...
..$ : num [1:20] 5.87 5.93 5.87 6.22 5.96 ...
..$ : num [1:10] 6.38 6.62 6.74 6.53 6.45 ...
Similarily, I need to generate (0, 20, 60, 20, 0 i.e. 2nd column of
rate_number) uniform random numbers in the range (using 2nd column
of range_mat) i.e. (8.5 to 9), (9 to 9.5), (9.5 to 10.5), (10.5 to
11), (11 to 11.5) respectively.
I could have generated these random numbers Individually using
runif, but main problem is range_number could be anything i.e. there
may be 50 rates but for each rate, no of rate combination will
always be 5 i.e. rate_number will always have 5 rows only and also
range_mat will always have 6 rows only.
I tried writing loops and even tapply etc. but just can't get through.
I sincerely request you to kindly guide me.
Regards
David Winsemius, MD
West Hartford, CT
______________________________________________
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.