# [R] Odp: Sampling problem

Petr PIKAL petr.pikal at precheza.cz
Tue Nov 16 17:09:07 CET 2010

```Hi

Here is one way (If I understood what you did ask).

> test
SubID CSE1 CSE2 CSE3 CSE4 WSE1 WSE2 WSE3 WSE4
1     1    6    5    6    2    6    2    2    4
2     2    6    4    7    2    6    6    2    3
3     3    5    5    5    5    5    5    4    5
4     4    5    4    3    4    4    4    5    2
5     5    5    6    7    5    6    4    4    1
6     6    5    4    3    6    4    3    7    3
7     7    3    6    6    3    6    5    2    1
8     8    3    6    6    3    6    5    4    7

fff<-function(dat, col1=2, col2=1) {
# col1 are number of columns from fist set and col2 from the second set
sel1<-sample(1:4, col1)
sel2<-sample((1:4)[-sel1], col2)
dat[,c(sel1+1,sel2+5)]
# i presume that your data are same as you posted, if not you has to
change above values
}

fff(test)
CSE2 CSE1 WSE3
1    5    6    2
<snip>
8    6    3    4
> fff(test)
CSE1 CSE2 WSE3
1    6    5    2
<snip>
8    3    6    4
> fff(test)
CSE1 CSE3 WSE4
1    6    6    4
<snip>
8    3    6    7

If you want to do it 1000 times just use simple loop

result <- vector("list", 1000)
for (i in 1:1000) result[[i]] <- fff(test)

Regards
Petr

r-help-bounces at r-project.org napsal dne 15.11.2010 21:59:21:

> wangwallace <talenttree at gmail.com>
> Odeslal: r-help-bounces at r-project.org
>
> 15.11.2010 21:59
>
> Komu
>
> r-help at r-project.org
>
> Kopie
>
> Předmět
>
> [R] Sampling problem
>
>
> Hey,
>
> I am hoping someone can help me with a sampling question.
>
> I have a data frame of 8 variables (the first column is the subjects'
id):
>
>     SubID    CSE1 CSE2 CSE3 CSE4 WSE1 WSE2 WSE3 WSE4
>       1          6      5       6       2      6      2        2       4
>       2          6      4       7       2      6      6        2       3
>       3          5      5       5       5      5      5        4       5
>       4          5      4       3       4      4      4        5       2
>       5          5      6       7       5      6      4        4       1
>       6          5      4       3       6      4      3        7       3
>       7          3      6       6       3      6      5        2       1
>       8          3      6       6       3      6      5        4       7

>
> the 6 variables are categorized into two groups with CSE1, CSE2, CSE3,
and
> CSE4 in one group and the rest in another group.
>
> >sample(data[,2:4],2,replace=FALSE)
>
>    CSE1 CSE2
> 1      6    5
> 2      6    4
> 3      5    5
> 4      5    4
> 5      5    6
> 6      5    4
> 7      3    6
> 8      3    6
>
> Now I want to sample 1 column from another group of variables (i.e.,
WSE1,
> WSE2, WSE3, WSE4), but I want to restrict a vector I am going to sample
from
> to only those columns that are not correspond to GROUP 1 variables I
have
> sampled. That is, I want to sample a column from WSE3, WSE4  Columns
> corresponding to CSE1 and CSE2 (i.e., WSE1, WSE2) need to be dropped.
>
> How can I do this? what if I want to repeat this whole process (drawing
2
> random columns from CSE1, CSE2, CSE3, and CSE4 first, AND then another
> random column from WSE1, WSE2, WSE3, and WSE4) for 1000 times. any
ideas?
>
>
> --
> View this message in context:
http://r.789695.n4.nabble.com/Sampling-problem-
> tp3043804p3043804.html
> Sent from the R help mailing list archive at Nabble.com.
>
> ______________________________________________
> R-help at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help