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]]