R语言-组合全排列问题

问题1:5组数据,从每组数据中抽取n个全组合,列出所有组合

  
#数据下标
  a<-c(1,2,3)   
  b<-c(4,5,6)
  c<-c(7,8,9)
  d<-c(10,11,12)
  e<-c(13,14,15)

  n<-2 #抽取个数
  ac<-t(combn(a,n)) #求出a组数据所有转置组合
  ac<-as.data.frame(ac)  #转成数据框,统一处理
  bc<-t(combn(b,n))
  bc<-as.data.frame(bc)
  cc<-t(combn(c,n))
  cc<-as.data.frame(cc)
  dc<-t(combn(d,n))
  dc<-as.data.frame(dc)
  ec<-t(combn(e,n))
  ec<-as.data.frame(ec)

#两两遍历组合
  f_f<-function(a,b){
    temp<-data.frame()
    for(i in 1:nrow(a)){
      for(j in 1:nrow(b)){
        ab = c(a[i,],b[j,])
        temp<-rbind(temp,ab)
      }
    }
    return(temp)
  }

  result<-f_f(ac,bc)
  result<-f_f(result,cc)
  result<-f_f(result,dc)
  result<-f_f(result,ec)

结果1

1   1   2   4   5   7   8   10  11  13  14
2   1   2   4   5   7   8   10  11  13  15
3   1   2   4   5   7   8   10  11  14  15
4   1   2   4   5   7   8   10  12  13  14
5   1   2   4   5   7   8   10  12  13  15
6   1   2   4   5   7   8   10  12  14  15
7   1   2   4   5   7   8   11  12  13  14
8   1   2   4   5   7   8   11  12  13  15
9   1   2   4   5   7   8   11  12  14  15
10  1   2   4   5   7   9   10  11  13  14
11  1   2   4   5   7   9   10  11  13  15
12  1   2   4   5   7   9   10  11  14  15
13  1   2   4   5   7   9   10  12  13  14
14  1   2   4   5   7   9   10  12  13  15
15  1   2   4   5   7   9   10  12  14  15
16  1   2   4   5   7   9   11  12  13  14
17  1   2   4   5   7   9   11  12  13  15
18  1   2   4   5   7   9   11  12  14  15
19  1   2   4   5   8   9   10  11  13  14
20  1   2   4   5   8   9   10  11  13  15
21  1   2   4   5   8   9   10  11  14  15
22  1   2   4   5   8   9   10  12  13  14
23  1   2   4   5   8   9   10  12  13  15
24  1   2   4   5   8   9   10  12  14  15
25  1   2   4   5   8   9   11  12  13  14
26  1   2   4   5   8   9   11  12  13  15
27  1   2   4   5   8   9   11  12  14  15
28  1   2   4   6   7   8   10  11  13  14
29  1   2   4   6   7   8   10  11  13  15
30  1   2   4   6   7   8   10  11  14  15
31  1   2   4   6   7   8   10  12  13  14
32  1   2   4   6   7   8   10  12  13  15
33  1   2   4   6   7   8   10  12  14  15
34  1   2   4   6   7   8   11  12  13  14
35  1   2   4   6   7   8   11  12  13  15
36  1   2   4   6   7   8   11  12  14  15
37  1   2   4   6   7   9   10  11  13  14
38  1   2   4   6   7   9   10  11  13  15
39  1   2   4   6   7   9   10  11  14  15
40  1   2   4   6   7   9   10  12  13  14
41  1   2   4   6   7   9   10  12  13  15
42  1   2   4   6   7   9   10  12  14  15
43  1   2   4   6   7   9   11  12  13  14
44  1   2   4   6   7   9   11  12  13  15
45  1   2   4   6   7   9   11  12  14  15
46  1   2   4   6   8   9   10  11  13  14
47  1   2   4   6   8   9   10  11  13  15
48  1   2   4   6   8   9   10  11  14  15
49  1   2   4   6   8   9   10  12  13  14
50  1   2   4   6   8   9   10  12  13  15
51  1   2   4   6   8   9   10  12  14  15
52  1   2   4   6   8   9   11  12  13  14
53  1   2   4   6   8   9   11  12  13  15
54  1   2   4   6   8   9   11  12  14  15
55  1   2   5   6   7   8   10  11  13  14
56  1   2   5   6   7   8   10  11  13  15
57  1   2   5   6   7   8   10  11  14  15
58  1   2   5   6   7   8   10  12  13  14
59  1   2   5   6   7   8   10  12  13  15
60  1   2   5   6   7   8   10  12  14  15
61  1   2   5   6   7   8   11  12  13  14
62  1   2   5   6   7   8   11  12  13  15
63  1   2   5   6   7   8   11  12  14  15
64  1   2   5   6   7   9   10  11  13  14
65  1   2   5   6   7   9   10  11  13  15
66  1   2   5   6   7   9   10  11  14  15
67  1   2   5   6   7   9   10  12  13  14
68  1   2   5   6   7   9   10  12  13  15
69  1   2   5   6   7   9   10  12  14  15
70  1   2   5   6   7   9   11  12  13  14
71  1   2   5   6   7   9   11  12  13  15
72  1   2   5   6   7   9   11  12  14  15
73  1   2   5   6   8   9   10  11  13  14
74  1   2   5   6   8   9   10  11  13  15
75  1   2   5   6   8   9   10  11  14  15
76  1   2   5   6   8   9   10  12  13  14
77  1   2   5   6   8   9   10  12  13  15
78  1   2   5   6   8   9   10  12  14  15
79  1   2   5   6   8   9   11  12  13  14
80  1   2   5   6   8   9   11  12  13  15
81  1   2   5   6   8   9   11  12  14  15
82  1   3   4   5   7   8   10  11  13  14
83  1   3   4   5   7   8   10  11  13  15
84  1   3   4   5   7   8   10  11  14  15
85  1   3   4   5   7   8   10  12  13  14
86  1   3   4   5   7   8   10  12  13  15
87  1   3   4   5   7   8   10  12  14  15
88  1   3   4   5   7   8   11  12  13  14
89  1   3   4   5   7   8   11  12  13  15
90  1   3   4   5   7   8   11  12  14  15
91  1   3   4   5   7   9   10  11  13  14
92  1   3   4   5   7   9   10  11  13  15
93  1   3   4   5   7   9   10  11  14  15
94  1   3   4   5   7   9   10  12  13  14
95  1   3   4   5   7   9   10  12  13  15
96  1   3   4   5   7   9   10  12  14  15
97  1   3   4   5   7   9   11  12  13  14
98  1   3   4   5   7   9   11  12  13  15
99  1   3   4   5   7   9   11  12  14  15
100 1   3   4   5   8   9   10  11  13  14
101 1   3   4   5   8   9   10  11  13  15
102 1   3   4   5   8   9   10  11  14  15
103 1   3   4   5   8   9   10  12  13  14
104 1   3   4   5   8   9   10  12  13  15
105 1   3   4   5   8   9   10  12  14  15
106 1   3   4   5   8   9   11  12  13  14
107 1   3   4   5   8   9   11  12  13  15
108 1   3   4   5   8   9   11  12  14  15
109 1   3   4   6   7   8   10  11  13  14
110 1   3   4   6   7   8   10  11  13  15
111 1   3   4   6   7   8   10  11  14  15
112 1   3   4   6   7   8   10  12  13  14
113 1   3   4   6   7   8   10  12  13  15
114 1   3   4   6   7   8   10  12  14  15
115 1   3   4   6   7   8   11  12  13  14
116 1   3   4   6   7   8   11  12  13  15
117 1   3   4   6   7   8   11  12  14  15
118 1   3   4   6   7   9   10  11  13  14
119 1   3   4   6   7   9   10  11  13  15
120 1   3   4   6   7   9   10  11  14  15
121 1   3   4   6   7   9   10  12  13  14
122 1   3   4   6   7   9   10  12  13  15
123 1   3   4   6   7   9   10  12  14  15
124 1   3   4   6   7   9   11  12  13  14
125 1   3   4   6   7   9   11  12  13  15
126 1   3   4   6   7   9   11  12  14  15
127 1   3   4   6   8   9   10  11  13  14
128 1   3   4   6   8   9   10  11  13  15
129 1   3   4   6   8   9   10  11  14  15
130 1   3   4   6   8   9   10  12  13  14
131 1   3   4   6   8   9   10  12  13  15
132 1   3   4   6   8   9   10  12  14  15
133 1   3   4   6   8   9   11  12  13  14
134 1   3   4   6   8   9   11  12  13  15
135 1   3   4   6   8   9   11  12  14  15
136 1   3   5   6   7   8   10  11  13  14
137 1   3   5   6   7   8   10  11  13  15
138 1   3   5   6   7   8   10  11  14  15
139 1   3   5   6   7   8   10  12  13  14
140 1   3   5   6   7   8   10  12  13  15
141 1   3   5   6   7   8   10  12  14  15
142 1   3   5   6   7   8   11  12  13  14
143 1   3   5   6   7   8   11  12  13  15
144 1   3   5   6   7   8   11  12  14  15
145 1   3   5   6   7   9   10  11  13  14
146 1   3   5   6   7   9   10  11  13  15
147 1   3   5   6   7   9   10  11  14  15
148 1   3   5   6   7   9   10  12  13  14
149 1   3   5   6   7   9   10  12  13  15
150 1   3   5   6   7   9   10  12  14  15
151 1   3   5   6   7   9   11  12  13  14
152 1   3   5   6   7   9   11  12  13  15
153 1   3   5   6   7   9   11  12  14  15
154 1   3   5   6   8   9   10  11  13  14
155 1   3   5   6   8   9   10  11  13  15
156 1   3   5   6   8   9   10  11  14  15
157 1   3   5   6   8   9   10  12  13  14
158 1   3   5   6   8   9   10  12  13  15
159 1   3   5   6   8   9   10  12  14  15
160 1   3   5   6   8   9   11  12  13  14
161 1   3   5   6   8   9   11  12  13  15
162 1   3   5   6   8   9   11  12  14  15
163 2   3   4   5   7   8   10  11  13  14
164 2   3   4   5   7   8   10  11  13  15
165 2   3   4   5   7   8   10  11  14  15
166 2   3   4   5   7   8   10  12  13  14
167 2   3   4   5   7   8   10  12  13  15
168 2   3   4   5   7   8   10  12  14  15
169 2   3   4   5   7   8   11  12  13  14
170 2   3   4   5   7   8   11  12  13  15
171 2   3   4   5   7   8   11  12  14  15
172 2   3   4   5   7   9   10  11  13  14
173 2   3   4   5   7   9   10  11  13  15
174 2   3   4   5   7   9   10  11  14  15
175 2   3   4   5   7   9   10  12  13  14
176 2   3   4   5   7   9   10  12  13  15
177 2   3   4   5   7   9   10  12  14  15
178 2   3   4   5   7   9   11  12  13  14
179 2   3   4   5   7   9   11  12  13  15
180 2   3   4   5   7   9   11  12  14  15
181 2   3   4   5   8   9   10  11  13  14
182 2   3   4   5   8   9   10  11  13  15
183 2   3   4   5   8   9   10  11  14  15
184 2   3   4   5   8   9   10  12  13  14
185 2   3   4   5   8   9   10  12  13  15
186 2   3   4   5   8   9   10  12  14  15
187 2   3   4   5   8   9   11  12  13  14
188 2   3   4   5   8   9   11  12  13  15
189 2   3   4   5   8   9   11  12  14  15
190 2   3   4   6   7   8   10  11  13  14
191 2   3   4   6   7   8   10  11  13  15
192 2   3   4   6   7   8   10  11  14  15
193 2   3   4   6   7   8   10  12  13  14
194 2   3   4   6   7   8   10  12  13  15
195 2   3   4   6   7   8   10  12  14  15
196 2   3   4   6   7   8   11  12  13  14
197 2   3   4   6   7   8   11  12  13  15
198 2   3   4   6   7   8   11  12  14  15
199 2   3   4   6   7   9   10  11  13  14
200 2   3   4   6   7   9   10  11  13  15
201 2   3   4   6   7   9   10  11  14  15
202 2   3   4   6   7   9   10  12  13  14
203 2   3   4   6   7   9   10  12  13  15
204 2   3   4   6   7   9   10  12  14  15
205 2   3   4   6   7   9   11  12  13  14
206 2   3   4   6   7   9   11  12  13  15
207 2   3   4   6   7   9   11  12  14  15
208 2   3   4   6   8   9   10  11  13  14
209 2   3   4   6   8   9   10  11  13  15
210 2   3   4   6   8   9   10  11  14  15
211 2   3   4   6   8   9   10  12  13  14
212 2   3   4   6   8   9   10  12  13  15
213 2   3   4   6   8   9   10  12  14  15
214 2   3   4   6   8   9   11  12  13  14
215 2   3   4   6   8   9   11  12  13  15
216 2   3   4   6   8   9   11  12  14  15
217 2   3   5   6   7   8   10  11  13  14
218 2   3   5   6   7   8   10  11  13  15
219 2   3   5   6   7   8   10  11  14  15
220 2   3   5   6   7   8   10  12  13  14
221 2   3   5   6   7   8   10  12  13  15
222 2   3   5   6   7   8   10  12  14  15
223 2   3   5   6   7   8   11  12  13  14
224 2   3   5   6   7   8   11  12  13  15
225 2   3   5   6   7   8   11  12  14  15
226 2   3   5   6   7   9   10  11  13  14
227 2   3   5   6   7   9   10  11  13  15
228 2   3   5   6   7   9   10  11  14  15
229 2   3   5   6   7   9   10  12  13  14
230 2   3   5   6   7   9   10  12  13  15
231 2   3   5   6   7   9   10  12  14  15
232 2   3   5   6   7   9   11  12  13  14
233 2   3   5   6   7   9   11  12  13  15
234 2   3   5   6   7   9   11  12  14  15
235 2   3   5   6   8   9   10  11  13  14
236 2   3   5   6   8   9   10  11  13  15
237 2   3   5   6   8   9   10  11  14  15
238 2   3   5   6   8   9   10  12  13  14
239 2   3   5   6   8   9   10  12  13  15
240 2   3   5   6   8   9   10  12  14  15
241 2   3   5   6   8   9   11  12  13  14
242 2   3   5   6   8   9   11  12  13  15
243 2   3   5   6   8   9   11  12  14  15
Showing 1 to 27 of 243 entries, 10 total columns

问题2:5组数据,随机从每组数据中抽取n个数据

  n<- 2 #抽样数目
  result<-data.frame()
  myData<-data.frame(a=c(1,2,3,4,6,7,8,9,10,11),b=c(1,2,3,4,5,6,7,8,9,10),s=c('A','A','A','B','B','B','B','C','C','C'))
  sdata<-split(myData,data$s)
  for (i in 1:length(sdata)) {
    sb<-sdata[[i]] 
    x<-sb[sample(nrow(sb),n,replace = F),]
    result<-rbind(result,x)
  }
数据mydata
    a   b   s
1   1   1   A
2   2   2   A
3   3   3   A
4   4   4   B
5   6   5   B
6   7   6   B
7   8   7   B
8   9   8   C
9   10  9   C
10  11  10  C

结果result
    a   b   s
1   1   1   A
3   3   3   A
7   8   7   B
5   6   5   B
10  11  10  C
8   9   8   C

只是一种思路

你可能感兴趣的:(R语言-组合全排列问题)