从百分比重新创建原始数据:如何随机分配类别以创建数据?

时间:2015-04-19 20:04:54

标签: r apply sample

我正在处理的数据涉及30个人对60个案例的观察。我有4个类别的百分比列表作为我的起点。目标是向后工作并重新创建原始数据。

例如,案例33被30个观察者的13%,64%,23%和0%分类为' 1'' 2',' 3&# 39;和' 4'分别。

      [1]  [2]  [3]  [4]
[33,]  13   64   23   0
[34,]   6   84   10   0
[35,]   7   55   38   0
[36,]   6   37   57   0
[37,]  44   34   21   0
[38,]   9   13   54  24

订单并不重要;事实上,随机观察者最好将案例33分类为' 1'' 2'重要的是,如上所述,它们应该大致相当于百分比。

我编写了一个可以为单个实例执行此操作的函数(请忽略可怕的质量):

makeobs<-function (d){
  ncases<-round((d/100)*30)
  u<-1:30;u1<-1:30
  n1<-sample(u1, ncases[1]);u2<-u1[!u1 %in% n1]
  n2<-sample(u2, ncases[2]);u3<-u2[!u2 %in% n2]
  n3<-sample(u3, ncases[3]);u4<-u3[!u3 %in% n3]
  n4<-u4;
  u[n1]<-1;u[n2]<-2;u[n3]<-3;u[n4]<-4
  u
}

如果dc(12, 64, 23, 0),则makeobs会返回以下结果:

> d<-c(13, 64, 23, 0)
> makeobs(d)
 [1] 1 2 1 2 3 3 2 2 2 3 2 2 2 2 2 2 3 1 2 2 2 2 1 2 3 3 2 2 3 2
> table(makeobs(d))

 1  2  3 
 4 19  7 

显然,该功能似乎适用于百分比向量。但是当我在60个案例的矩阵上使用apply时,它并没有。

这是错误消息:

  

sample.int中的错误(长度(x),大小,替换,概率)不能采取   当“替换= FALSE&#39;

时,样本大于人口

我做错了什么?我希望能够最终解决这个问题,并了解我为什么错。任何帮助表示赞赏!

0 个答案:

没有答案