2016-07-25 4 views
0

私は100人の労働者を抱えています。それらをランダムに5つのグループ、ABCDEに割り当てたいと思います。しかし、A = 23、B = 37、C = 10、D = 20、E = 10というように、場所は特定の能力を有する。だから私は、次の表(テーブルの一部)私はRでこれを行うことができますどのようにランダムメソッドを使用して個体を場所に割り当てる

Worker Group 
1 A 
2 D 
3 E 
4 D 
. 
. 
. 
. 
. 
. 
98 C 
99 B 
100 E 

を持っている必要がありますか?ここで

答えて

1

がまっすぐ進むのソリューションです:

#define your groups based on desired sizes 
groups<-c(rep("A", 23), rep("B", 37), rep("C", 10), rep("D", 20), rep("E", 10)) 

#now random sample to define split 
Group<-sample(groups, 100, replace=FALSE) 

df<-data.frame(Worker=1:100, Group) 
+0

Cの数は10ではなく9ですが、わからないのはなぜですか? – 2200

3

私はあなたがそれらの特定の番号を必要としないのではなく、単に確率が可能ならばdf$Groupための最もコンパクトなソリューションが

sample(rep(LETTERS[1:5], c(23,37,10,20,10))) 

だと思います同じであれば、置換でサンプリングして、次のように引数probsを使用する必要があります。

sample(LETTERS[1:5],100, replace = T, prob = c(.23, .37,.1,.2,.1)) 

+0

はい、それは私が書いたものです。特定の確率でサンプリングしたい場合は、各グループで特定の番号を必要としないよう注意して、2番目のスニペットを使用することができます。 – shayaa

関連する問題