2014-10-27 2 views
-1

Если мне нужно создать таблицу, состоящую из 19 учеников, у каждого ученика будет 10 данных о том, идут ли они вовремя. Я хотел бы рандомизировать 100% по времени, 90% по времени и 80% по времени для каждого из студентов. Я не могу придумать способ рандомизировать процентное соотношение по времени для каждого человека (например, студент № 1 имеет временную ставку 90%, а учащийся № 2 имеет временную ставку 70% и т. Д.). Это то, что я придумайте, если у всех студентов будет ставка времени 90%.R - Создание вероятности возникновения в кадре данных

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))))) 

Заранее спасибо!

+0

кажется, что проблема в вашем коде, что вы неправильно набранный '' true' на замену = true'. С какими проблемами вы сталкиваетесь с кодом? – Bernardo

+0

Благодарим вас за обнаружение mistabke.I хотел бы спросить, хочу ли я рандомизировать процентное соотношение времени для разных студентов. Например, студент № 1 имеет временную ставку 90%, а учащийся № 2 имеет временную ставку 70% и т. Д. – msstefunni

+1

Имеет ли каждый учащийся независимую вероятность опоздания, что известно априори? – vpipkt

ответ

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 

Тогда для каждого из этих студентов, привлечь 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) 
+0

любая конкретная причина для downvote? – keegan

+0

В любом случае, чтобы вернуть нисходящее? Это было совершенно случайно. Когда я пытаюсь отменить downvote, он показывает сообщение «Вы последний проголосовали за этот ответ 1 час назад. Ваш голос теперь заблокирован, если этот ответ не отредактирован». Мне очень жаль! – Bernardo

+0

Ха это не проблема! – keegan

0

Вы могли бы попытаться назначить студенту разную вероятность, а затем использовать для случайного его поведение on time или late

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 time или late:

DF$attend = sapply(DF$prob,function(x) {sample(c("on time","late"),prob = c(x,1-x),1)}) 
Смежные вопросы