Re: [R] Question about avoid the for loop

From: Jorge Ivan Velez <jorgeivanvelez_at_gmail.com>
Date: Thu, 03 Jun 2010 20:16:19 -0400

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 <
> jorgeivanvelez_at_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_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.
>>>
>>
>>
>

        [[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. Received on Fri 04 Jun 2010 - 00:19:00 GMT

Archive maintained by Robert King, hosted by the discipline of statistics at the University of Newcastle, Australia.
Archive generated by hypermail 2.2.0, at Fri 04 Jun 2010 - 00:30:28 GMT.

Mailing list information is available at https://stat.ethz.ch/mailman/listinfo/r-help. Please read the posting guide before posting to the list.

list of date sections of archive