如何从给定标准,排列方法的数据中进行采样

时间:2019-04-04 23:23:07

标签: r permutation sampling

我正在使用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的数据中进行采样。

是否可以解决此问题?

0 个答案:

没有答案