R - 在数据框架中创建出现概率

时间:2014-10-27 18:52:55

标签: r for-loop random dataframe probability

如果我必须创建一个包含19名学生的表格,每个学生都有10个数据,表明他们是否准时上课。我想按时间率100%按时间率,90%按时间率和80%按时间率随机分配给每个学生。我想不出可以将每个人的准时百分比随机化的方法。(例如,学生#1的准时率为90%,而学生#2的准时率为70%等)这就是我的意思如果所有学生的准时率达到90%,我们会想出来。

ID<-data.frame(rep(1:19,each=10))
ID$DOSE<- c(replicate(19,
c(sample(rep(c("on time","late")),size=10,replace=TRUE,prob=c(0.90,0.10)))))

提前谢谢!

2 个答案:

答案 0 :(得分:1)

对于19名学生中的每一名,只需绘制随机准时率

probs<-c(.9,.8,.7)
onTimeRates<-sample(probs,19,replace=TRUE)
[1] 0.8 0.7 0.7 0.7 0.7 0.8 0.8 0.9 0.8 0.7 0.8 0.9 0.9 0.8 0.8 0.9 0.9 0.7 0.7

然后,对于这些学生中的每一个,按时间&#34;绘制10个数据,并提供相应的概率

x<-sapply(onTimeRates,function(x) sample(c('punctual','late'),10,replace=TRUE,prob=c(x,1-x) ))

然后将此变量x折叠到您想要的列中。

ID$DOSE<-matrix(x,ncol=1)

答案 1 :(得分:0)

您可以尝试为学生分配不同的概率,然后使用其随机行为 on timelate

1创建data.frame

DF = data.frame(ID = rep(1:19,each=10))

2为每个学生分配概率:

DF$prob = rep(sample((70:100)/100,19,replace=TRUE),each=10)

3使用概率来抽样on timelate

DF$attend = sapply(DF$prob,function(x) {sample(c("on time","late"),prob = c(x,1-x),1)})