我有一个数据集,里面包含了病例和对照,变量patints=1为病例,=0为对照,现在我要以性别(sex,age+ -5,village)作匹配条件,做1:4病例对照抽样,下面是程序
sample.cc<-function(data,seed,jieguo1,jieguo2){read.csv(data)->datset.seed(seed)attach(dat)
index<-which(patients==1) #确定患者所处数据框的位置
len.index<-length(index)
result<-matrix(nr=len.index,nc=5)
for(i in 1:len.index)
{index.contr<-which(sex==sex[index]&village==village[index]&age<(age[index]+5)&age>(age[index]-5))
sample.cc<-sample(index.contr,4)
result[i,]<-c(index,sample.cc)}
as.numeric(t(result))->result2
skip<-length(result2)/5-1
index.NA<-rep(c(rep(FALSE,5),TRUE),len.index) #插入NA值的角标
result3<-numeric()result3[index.NA]<-NA
result3[index.NA==FALSE]<-result2
dat[result3,]->dat.sample
detach(dat)as.data.frame(result)->result
names(result)<-c('病例','对照1','对照2','对照3','对照4')
write.csv(result,jieguo1)
write.csv(dat.sample,jieguo2)
print(result)}
虽然结果里病例和对照是按照1:4呈现,但是发现结果的对照组里居然有病例出现,不知道哪儿出错了,请大神指点啊!万谢!!!