[R] Sampling procedure

David Winsemius dwinsemius at comcast.net
Thu Oct 15 18:14:08 CEST 2009


OK, you're right. I thought it might be simple fix to increase the  
number of columns to accommodate, but the recycling conventions trips  
up that strategy.

Thanks;
David.

On Oct 15, 2009, at 11:55 AM, Bert Gunter wrote:

>
> ... except the matrix approach doesn't work if the length of the  
> vector is
> not exactly divisible by the number of groups. That's why I used  
> split.
>
> Cheers,
>
> Bert Gunter
> Genentech Nonclinical Biostatistics
>
>
>
> -----Original Message-----
> From: David Winsemius [mailto:dwinsemius at comcast.net]
> Sent: Thursday, October 15, 2009 8:48 AM
> To: Bert Gunter
> Cc: 'Marcio Resende'; r-help at r-project.org
> Subject: Re: [R] Sampling procedure
>
> If parsimony is needed, then define a 9-row matrix and send a
> randomized indexed version of Example to it:
>
> s<-matrix(NA, nrow=9, ncol=length(Example)/9)
> s[,] <- Example[sample(Example, length(Example) )]
>
>> str(s)
>  int [1:9, 1:87] 503 731 708 23 255 675 163 381 361 412 ...
>
> Or even:
>
> s<-matrix(Example[ sample(Example, length(Example) )], nrow=9,
> ncol=length(Example)/9)
>
> -- 
> David
>
> On Oct 15, 2009, at 11:22 AM, Bert Gunter wrote:
>
>> If I understand what is wanted correctly, this can be a one-liner!
>> -- think
>> whole objects:
>>
>> splitup <- function(x,n.groups)
>> #split x into n.groups mutually exclusive sets
>> {
>> lx <- length(x)
>> if(n.groups >= lx) stop("Number of groups greater than vector
>> length")
>> x <- x[sample(lx,lx)]
>> split(x,seq_len(n.groups))
>> }
>>
>> ## testit
>>
>>> splitup(1:71,9)
>>
>> $`1`
>> [1] 22 26 38 50 65 60  9 27
>>
>> $`2`
>> [1] 24  2 69 28 71 31 41 13
>>
>> $`3`
>> [1] 16 47 63 45 23  1  8 32
>>
>> $`4`
>> [1] 34 39 64 35  7 19  4 55
>>
>> $`5`
>> [1] 54 10 37 68  6 17 70 18
>>
>> $`6`
>> [1] 61 11  5 46 33 43 14 56
>>
>> $`7`
>> [1] 42 44 12 62 66 48 57 58
>>
>> $`8`
>> [1] 21 40 30 29 20 49 52 67
>>
>> $`9`
>> [1] 59 15 25 51  3 36 53
>>
>>
>> Cheers,
>>
>> Bert Gunter
>> Genentech Nonclinical Statistics
>>
>>
>> -----Original Message-----
>> From: r-help-bounces at r-project.org [mailto:r-help-bounces at r-project.org
>> ] On
>> Behalf Of David Winsemius
>> Sent: Thursday, October 15, 2009 7:55 AM
>> To: Marcio Resende
>> Cc: r-help at r-project.org
>> Subject: Re: [R] Sampling procedure
>>
>>
>> On Oct 15, 2009, at 10:19 AM, Marcio Resende wrote:
>>
>>>
>>> I would like to divide a vector in 9 groups in a way that each
>>> number is
>>> present in only one group.
>>> In a vector of 783 I would like to divide in 9 different groups of  
>>> 87
>>>
>>> Example <- matrix(c(1:783),ncol = 1)
>>
>>
>>> Example <- matrix(c(1:783),ncol = 1)
>>> Grp1 <- sample(Example, 87, replace=FALSE)
>>> Grp2 <- sample(Example[-Grp1], 87, replace=FALSE)
>>> Grp3 <- sample(Example[-c(Grp1, Grp2)], 87, replace=FALSE)
>> # lather, rinse , repeat
>>
>>
>>> s1 <- as.matrix(sample(Example,87, re = FALSE))
>>> Example <- Example[-s1]
>>> s2 <- as.matrix(sample(Example,87, re = FALSE))
>>> #however I don´t know how to remove the second group from the
>>> "Example" to
>>> continue sampling.
>>>
>>
>> #Don't mess up the original
>>
>>> There is probably an easy and faster way to do this.
>>> Could anybody help me?
>>> Thanks
>> -- 
>
> David Winsemius, MD
> Heritage Laboratories
> West Hartford, CT
>
>

David Winsemius, MD
Heritage Laboratories
West Hartford, CT




More information about the R-help mailing list