[R] Sampling procedure
Bert Gunter
gunter.berton at gene.com
Thu Oct 15 17:55:22 CEST 2009
... 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
More information about the R-help
mailing list