Я выполняю перестановки своих данных, используя sample () и циклы.
У меня есть данные для 400 случаев и 1000 контролей из 90 больниц.Я провел логистическую регрессию для этих данных.Теперь я хочу сделать перестановки.
Мой план состоит в следующем:
1) Случайно выбрать «случай» из ЛЮБОЙ больницы
2) Случайно выбрать «контроль» из РАЗНОЙ больницы
3) Повторяйте шаги 1 и 2, пока у меня не будет 90 разных случаев и 90 разных элементов управления.Цель состоит в том, чтобы в каждой больнице был один случай ИЛИ один контроль.
На данный момент это мой код:
CaseControl<-as.factor(c(rep(1,400), rep(0,1000)))
Hospital<-c(rep(1:90, 15), rep(1:50))
DataFrame<-data.frame(CaseControl, Hospital)
Case<-data.frame(subset(DataFrame,CaseControl=="0"))
Control<-data.frame(subset(DataFrame,CaseControl=="1"))
PermutedDataset<-matrix(,180,2)
RCase<-matrix(,90,2)
RControl<-matrix(,90,2)
RCase[1,]<-as.matrix(Case[sample(nrow(Case),1),])
RControl[1,]<-as.matrix(Control[ sample( which( Control$Hospital != RCase[1,2] ) , 1 ) , ])
RCase[2,]<- as.matrix(Case[ sample( which( Case$Hospital != RCase[1,2] ) , 1),])
RControl[2,]<-as.matrix(Control[ sample( which( Control$Hospital != RCase[2,2] & Control$Hospital != RControl[1,2] ) , 1),])
for (i in 3:90) {
RCase[i,]<- as.matrix(Case[ sample( which( Case$Hospital != RCase[1:i-1,2]) , 1),])
RControl[i,]<-as.matrix(Control[ sample( which( Control$Hospital != RCase[i,2] & Control$Hospital != RControl[1:i-1,2]) , 1),])
}
Мой код выполняется, однако я получаю повторяющиеся идентификаторы больниц из раздела «Цикл».Я указал на выборку только на основании данных, в которых идентификатор больницы не равен ни одному из предыдущих идентификаторов больницы, которые уже были отобраны.
Есть ли способ решить эту проблему?