我正在使用sample()和循环对数据进行排列。
我有来自90家医院的400例病例和1000名对照的数据。我已经对此数据进行了逻辑回归。现在,我想进行排列。
我的计划是:
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),])
}
我的代码运行了,但是我从循环部分得到了重复的医院ID。我已经声明仅从医院ID不等于任何先前已经采集的医院ID的数据中进行采样。
是否可以解决此问题?