Yes, in my case here, each strata has the same number of 0's and 1's. But I want the y to be randomly generated within each strata, so y should have some difference across the strata. (at least for the rnorm part we would see much clear randomness) (I hope what I am asking here is clear to you. )
Using option 2 you provided previously the output: > cbind(x, t,y) x t y [1,] 1 0 0.0000000 [2,] 1 0 0.0000000 [3,] 1 1 0.8920037 [4,] 1 1 1.6695435 [5,] 1 1 0.8289429 [6,] 2 0 0.0000000 [7,] 2 0 0.0000000 [8,] 2 1 0.8289429 [9,] 2 1 0.8920037 [10,] 2 1 1.6695435 [11,] 3 0 0.0000000 [12,] 3 0 0.0000000 [13,] 3 1 1.6695435 [14,] 3 1 0.8289429 [15,] 3 1 0.8920037 For the rnorm part, it seems only take 3 values 1.66954, 0.82894, and 0.8920 On Thu, Jun 3, 2010 at 8:16 PM, Jorge Ivan Velez <jorgeivanve...@gmail.com>wrote: > Hi Carrie, > > It works just fine in this case because you have the same number of 0's and > 1's within each strata. If that would not be the case, option 1 would not > work. That's why I provided you a second option. > > Best, > Jorge > > > On Thu, Jun 3, 2010 at 7:24 PM, Carrie Li <> wrote: > >> Thanks! Jorge >> Just one more question I don't get it even after checking help >> For option, why just using with(d,...), ifelse works on stratum indexed by >> x automatically ? >> Since in with, we didn't specify the stratum is indexed by x, what if you >> have another categorical variable in the data ? >> Thanks again! >> >> >> >> >> On Thu, Jun 3, 2010 at 12:21 PM, Jorge Ivan Velez < >> jorgeivanve...@gmail.com> wrote: >> >>> Hi Carrie, >>> >>> Here are two options: >>> >>> # Option 1 >>> d <- data.frame(x, t) >>> y <- with(d, ifelse(t == 0, rbinom(2, 1, 0.2), rbinom(3, 1, 0.8))) >>> y >>> >>> # Option 2 -- more general case, e.g. you do not know >>> # how many 0's and 1's you have within each strata >>> spd <- with(d, split(d, x)) >>> do.call(c, lapply(spd, function(comp) >>> with(comp, ifelse(t == 0, rbinom(sum(t==0), 1, 0.2), >>> rbinom(sum(t!=0), 1, 0.8))))) >>> >>> HTH, >>> Jorge >>> >>> >>> On Thu, Jun 3, 2010 at 11:49 AM, Carrie Li <> wrote: >>> >>>> Dear R-helpers, >>>> >>>> I would like to generate a binary random variable within a stratum's >>>> stratum. Here is a simple example. >>>> >>>> >>>> ## x is the first level strata index, here I have 3 strata. >>>> x=c(rep(1,5), rep(2,5), rep(3,5)) >>>> >>>> ## within x, there is a second strata indexed by t=0 and t=1 >>>> t=rep(c(0,0,1,1,1),3) >>>> >>>> >>>> ## and within strata i and t=0 and t=1, I generate the random binomial >>>> variable respectively, and save in y >>>> y=rep(NA, length(x)) >>>> for (i in 1:3) >>>> { >>>> y[(x==i)&(t==0)]=rbinom(2, 1, 0.2) >>>> y[(x==i)&(t==1)]=rbinom(3, 1, 0.8) >>>> } >>>> >>>> >>>> My question: is there any way to avoid the for loop, since I have the >>>> first >>>> level strata has thousands of strata. (Within each x stratum, the t only >>>> has >>>> 2 levels, 0 and 1 ) >>>> >>>> Thanks for any help! >>>> >>>> Carrie >>>> >>>> [[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.